본문 바로가기

cs21

[네트워크] 포트 스캔 이란? (port scanning) 참고: https://www.avast.com/en-us/business/resources/what-is-port-scanning#mac 포트 스캔(port scan)은 네트워크에 어떤 포트가 열려 있고 데이터를 주고 받을 수 있는지 확인하는 방법입니다. 또는 호스트의 특정 포트에 패킷을 보내고 응답을 분석하여 취약점을 식별하는 과정이기도 합니다. 포트 스캔은 먼저 액티브 호스트 목록을 식별하고 해당 호스트와 해당 IP 주소를 매핑하여 수행합니다. 이는 네트워크 스캔인 호스트 검색(host discovery)이라고 하는 작업을 수행하는 것으로 부터 시작합니다. 포트 및 네트워크 스캔의 목표는 IP 주소, 호스트 및 포트를 식별하여 오픈되었거나 취약한 서버 위치를 파악하고 보안 수준을 진단하는 것입니다. .. 2023. 6. 19.
[네트워크] 포트 설명 및 작동방법 (port) 참고: https://www.cloudflare.com/learning/network-layer/what-is-a-computer-port/ 포트는 네트워크 연결이 시작되고 끝나는 가상의 지점입니다. 이는 소프트웨어 기반이고 컴퓨터의 운영체제에서 관리합니다. 각 포트는 특정 프로세스 또는 서비스와 연결됩니다. 이 포트를 사용하면 컴퓨터가 서로 다른 종류의 트래픽을 구분할 수 있습니다. 예를 들어 이메일과 웹 페이지가 동일한 인터넷을 통해 컴퓨터에 도착하더라도 이메일과 웹 페이지는 다른 포트로 이동됩니다. 포트 번호(port number)란? 포트는 네트워크에 연결되는 모든 장치에 표준화되어 있으며 각 포트는 번호를 할당받습니다. 대부분의 포트는 특정 프로토콜 용도로 예약되어 있습니다. 예를 들어, 모든 .. 2023. 6. 16.
[알고리즘] HMAC (Hash-based Message Authentication Codes) 이란? 참고: https://www.okta.com/identity-101/hmac/ Hash-based message authentication code(HMAC)는 해시 함수와 비밀 키를 사용하는 암호화 인증 기술입니다. 서명 및 비대칭 암호화와는 다르게 HMAC은 공유 암호를 사용하여 인증하고 데이터가 올바르고 신뢰할 수 있는지를 확안합니다. HMAC 작동 방법 송신자와 수신자는 통신 시 서로 주고 받는 내용이 비공개이길 원합니다. 또한 인터넷은 신뢰할 수 없는 매체이기 때문에 수신된 패킷이 변조되지는 않았는지 확인할 방법이 필요합니다. 이런 경우 HMAC이 효과적인 솔루션입니다. HMAC 키는 두 부분으로 구성됩니다. 이는 다음과 같습니다: Cryptographic keys: 암호화 알고리즘은 데이터를 .. 2023. 3. 19.
[알고리즘] MD5 해시 알고리즘 이란? 참고: https://www.avast.com/c-md5-hashing-algorithm 자바스크립트 MD5 해시 생성하기 MD5 란? MD5 (message-digest algorithm)는 콘텐츠 검증 및 디지털 서명뿐만 아니라 메시지 인증에 사용되는 해시 알고리즘입니다. MD5는 보낸 파일과 받은 파일이 일치하는지 확인하는 해시 함수를 기반으로 합니다. 이전에는 MD5가 데이터 암호화에 사용되었지만, 현재는 주로 인증에 사용됩니다. MD5는 어떻게 작동하는가? MD5는 수학적 해시 알고리즘을 통해 전체 파일을 읽어 원본 파일과 일치하는 서명을 생성합니다. 이렇게 하면 수신된 파일이 전송된 원본 파일과 일치하는지 인증할 수 있으므로 올바른 파일이 필요한 위치에 있는지 확인할 수 있습니다. MD5 해시.. 2023. 3. 13.
[알고리즘] 해시(hash) 알고리즘 이란? 참고: https://www.okta.com/identity-101/hashing-algorithms/ 해시 알고리즘은 데이터를 왜곡하여 읽을 수 없게 만드는 수학 함수입니다. 해시 알고리즘은 단방향 프로그램이라 다른 사람이 텍스트를 해독하거나 디코드할 수 없는 점이 해시의 키포인트입니다. 해시는 유휴 데이터를 보호하므로, 다른 사용자가 서버에 액세스하더라도 저장된 항목을 읽어낼 수 없습니다. 또한 작성자가 데이터를 만든 후 데이터가 조정되거나 변경되지 않았다는 것을 증명하는 데 도움을 줄 수 있습니다. 때로는 해시를 사용해 대량의 데이터를 이해할 수 있도록 도와줍니다. 해시 알고리즘이란 무엇인가? 수십 개의 서로 다른 해시 알고리즘이 존재하며 모두 조금씩 다르게 작동하지만 사용자는 그저 데이터를 입력할.. 2023. 3. 12.
[정보보안] JSON Web Token(JWT) 설명 참고: https://jwt.io/introduction JSON Web Token(JWT) 이란? JSON Web Token(JWT)은 당사자 사이의 정보를 JSON 객체로 안전하게 전송하기 위한 방법을 정의하는 개방형 표준(RFC 7519)입니다. 이 당사자 간 정보는 디지털 서명되어 있으므로 검증되었고 신뢰할 수 있습니다. JWT는 비밀번호(HMAC 알고리즘 사용) 또는 RSA, ECDSA를 사용한 공개/개인 키 쌍으로 서명할 수 있습니다. JWT는 당사자 간 보안을 제공하기 위해 암호화할 수도 있지만, 이보다는 서명된 토큰에 더 초점이 맞춰져 있습니다. 서명된 토큰은 해당 토큰에 포함된 claim의 무결성을 증명하지만 암호화된 토큰은 다른 당사자에게 claim을 숨길 뿐 입니다. 토큰이 공용/개인.. 2023. 3. 2.
[네트워크] DNS 설명 및 작동방법 참고: https://www.networkworld.com/article/3268449/what-is-dns-and-how-does-it-work.html Domain Name System (DNS)는 사람들이 기억하기 힘든 IP 주소를 웹 사이트 이름으로 매치시켜주는 인터넷의 기본 구성요소 중 하나입니다. 웹 사이트에 접속하기 위해 브라우저에 IP 주소를 입력하는 것 역시 가능하지만 대부분의 사람들은 도메인 이름이라고 부르는 기억하기 쉬운 단어로 구성된 인터넷 주소를 원합니다. 1970년대와 80년대 초반에는 인터넷에 연결된 모든 컴퓨터의 목록을 유지해 도메인 네임과 IP 주소 매칭 작업을 Stanford Research Institute의 Elizabeth Feinler 한 사람이 맡아서 했습니다. .. 2023. 2. 14.
[네트워크] HTTPS 설명 및 작동방법 참고: https://www.cloudflare.com/learning/ssl/what-is-https/ HTTPS 란? Hypertext transfer protocol secure(HTTPS)는 웹 브라우저와 웹 사이트 간에 데이터를 전송하는 데 사용되는 기본 프로토콜인 HTTP의 보안 버전입니다. HTTPS는 데이터 전송 시 보안을 강화하기 위해 암호화를 합니다. 이는 사용자의 은행 계좌, 이메일 서비스 또는 의료 보험 제공자에 로그인 등과 같이 중요한 데이터 전송 시 특히 중요합니다. 특히 로그인 자격 증명이 필요한 웹 사이트는 HTTPS를 사용해야 합니다. 크롬과 같은 모던 웹 브라우저에서는 HTTPS를 사용하지 않는 웹 사이트는 HTTPS를 사용하는 웹 사이트와 다르게 표시합니다. 웹 페이지가.. 2023. 2. 1.
[네트워크] SSL 인증서란? 정의 및 설명 참고: https://www.kaspersky.com/resource-center/definitions/what-is-a-ssl-certificate SSL 인증서란? SSL 인증서는 웹사이트의 ID를 인증하고 암호화된 연결을 가능하게 하는 디지털 인증서입니다. SSL은 웹 서버와 웹 브라우저 사이에 암호화된 링크를 생성하게 해주는 보안 프로토콜인 Secure Sockets Layer를 나타냅니다. 기업이나 조직은 온라인 거래를 보호하고 고객 정보를 안전하게 비공개로 유지하기 위해서 웹 사이트에 SSL 인증서를 추가해야 합니다. 요약하면, SSL은 인터넷 연결을 안전하게 유지하도록 하고 범죄자가 두 시스템 간에 전송되는 정보를 읽거나 수정하지 못하게 합니다. 브라우저의 주소 표시줄 URL 옆에 자물쇠 아.. 2022. 12. 14.
[네트워크] HTTP - HyperText Transfer Protocol 참고: https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/ HTTP 란? Hypertext Transfer Protocol(HTTP)은 World Wide Web의 기반이며 하이퍼텍스트 링크를 사용하여 웹 페이지를 로드하는데 사용됩니다. HTTP는 네트워크 장비 사이에 정보를 전송하기위해 설계된 애플리케이션 계층 프로토콜이며 네트워크 프로토콜 스택의 상위 계층에서 실행됩니다. 일반적인 HTTP 흐름은 클라이언트 장비가 서버에 데이터를 요청한 다음 서버가 응답 메시지를 보내는 것 입니다. HTTP request 란? HTTP 요청이란 웹 브라우저와 같은 인터넷 통신 플랫폼이 웹 사이트를 로드하는데 .. 2022. 12. 1.
[네트워크] CORS, 해결 방법 참고: https://dev.to/jpomykala/what-is-cors-11kf 이 포스트에서는 CORS와 CORS 에러가 무엇인지, 왜 이런 에러가 발생하는지에 대해 설명하겠습니다. 또한 이를 해결할 솔루션을 제시하고 preflight 요청과 CORS 헤더가 무엇인지, 그리고 이런 것 들이 커뮤니케이션에서 왜 중요한지를 설명할 것 입니다. 이 글은 독자가 웹 개발과 HTTP 프로토콜에 대한 기본적인 지식을 가지고 있다는 가정하에 쓰였습니다. 하지만 초보자도 읽기 쉽도록 CORS 주제와 밀접하게 연관되지 않은 기술적 주제는 피하려고 노력했습니다. CORS 란? CORS(Cross-Origin Resource Sharing)는 클라이언트(웹 브라우저)에 의해 제어되는 HTTP 기반 보안 메커니즘입니다... 2022. 11. 1.
[네트워크] 프록시 Proxy 개인 정보 보호는 모든 인터넷 사용자가 관심가져야 하는 사항입니다. 현재 홈쇼핑을 하거나 유튜브에서 동영상을 보거나 웹 서핑을 할 때 마다 사용자 추적이 어마어마하게 수행되고 있습니다. 이런 상황에서 프록시 서버는 사용자의 IP 주소를 숨겨주고 온라인에서 익명성을 확보해주며, 개인 정보를 보호하고 안전하게 유지할 수 있도록 해줍니다. 프록시 서버(Proxy Server)란? 프록시 서버는 클라이언트 컴퓨터가 먼저 접속하는 시스템으로 해당 클라이언트와 나머지 인터넷 사이의 게이트웨이 역할을 합니다. 이는 클라이언트의 인터넷 요청을 중개하는 것으로 클라이언트에 프록시 서버 설정을 해놓으면 컴퓨터가 목적지에 바로 요청을 보내지 않고 프록시 서버로 요청을 보내게 됩니다. 프록시 서버는 클라이언트로 부터 요청을 .. 2022. 10. 6.
[네트워크] 패킷 Packet 패킷이란? 네트워킹에서 패킷이란 기다란 메시지를 여러개로 쪼갠 작은 한 조각을 말합니다. 인터넷과 같은 컴퓨터 네트워크를 통해 전송되는 데이터는 작은 단위의 패킷으로 나뉘어 전송하고 이를 수신하는 기기에서 재조합하는 과정을 거칩니다. 굳이 예를 들자면 A가 B에게 편지를 쓰려하는 상황이고 편지는 접을 수 없으며 B의 우편함은 엽서만 들어갈 정도로 작다고 가정해 보겠습니다. A는 편지에 쓰고 싶은 내용이 많아서 A4용지를 사용할 수도 있지만 B의 우편함은 작으므로 A4용지로는 편지르 붙일 수 없어서 더 작은 엽서 여러장에 편지를 쓰고 순서대로 B의 우편함에 전달하게 됩니다. 그러면 나중에 B가 우편함에 받은 여러장의 엽서를 받은 순서대로 읽게됩니다. 이 예는 패킷이 인터넷에서 작동하는 방식과 유사합니다. .. 2022. 9. 23.
[네트워크] NAT - Network Address Translation NAT란 무엇인가 NAT는 network address translation의 줄임말로 네트워크상의 주소변환을 의미합니다. 이는 내부/외부 네트워크 간 데이터 전송 전 여러개의 사설(private) ip와 하나의 공용(public) ip를 매핑하는 방법입니다. NAT는 주로 하나의 공용 ip를 할당 받아 여러 기기를 사용하고 싶을 때 사용합니다. NAT가 작동하는 방법 먼저 ISP(Internet Service Provider; sk 브로드밴드나 kt 등)에서 인터넷을 공급받아 공유기에 연결을 해놓았고, 그 공유기에 연결된 컴퓨터가 있다고 가정해 보겠습니다. 여기서 공유기는 ISP로 부터 공용 ip(public ip) 한개를 할당 받았으며 NAT 설정을 해놨을 경우 공유기에 연결된 컴퓨터들은 사설망(pr.. 2022. 9. 20.
[시큐어 코딩/Secure Coding] API 악용 - equals()와 hashCode() 하나만 정의 참고: 안드로이드 시큐어코딩 가이드 참고: CWE-581 Object Model Violation: Just One of Equals and Hashcode Defined 참고: Seven pernicious kingdoms 설명 Java 표준에 따르면 Java의 같은 객체는 같은 해시코드를 가져야합니다. 즉 "a.equals(b) == true" 이면 "a.hashCode() == b.hashCode()” 이어야 합니다. 따라서 한 클래스 내에 equals()와 hashCode()를 구현할 때 둘 다 구현하거나 둘 다 구현하지 않아야 합니다. 안전한 코딩 한 클래스 내에 equals()를 정의했으면 hashCode()도 정의해야 하고 hashCode()를 정의했으면 equals()도 정의해야 합니다. .. 2019. 2. 14.
[시큐어 코딩/Secure Coding] API 악용 - null 파라미터 미검사 참고: 안드로이드 시큐어코딩 가이드 참고: Seven pernicious kingdoms 설명 Java 표준에 따르면 Object.equals(), Comparable.compareTo(), Comparator.compare()의 구현시 파라미터로 null이 넘어와도 특정한 값을 리턴해야 합니다. 이 규칙을 따르지 않으면 예기치 못한 동작이 발생할 수 있습니다. 안전한 코딩 모든 메소드의 구현에서 파라미터를 참조하는 구문을 사용한다면 그 넘겨받은 파라미터가 null 인지 비교해야 합니다. 예제 (Java) // Unsafe class TestApp { public static void main(String[] args) { TestApp object = new TestApp(); boolean test .. 2019. 2. 14.
[정보보안] Seven pernicious kingdoms: 소프트웨어 보안 에러의 분류 참고: Seven pernicious kingdoms: a taxonomy of software security errors 참고: CWE VIEW: Seven Pernicious Kingdoms소스코드 상의 보안 문제를 다룰 때 같은 종류의 문제끼리 범주화 하면 언제 발생할지 모를 피해를 최소화할 수 있고 소스코드 작성 시 발생할 수 있는 실수를 줄일 수 있습니다. 이 문제는 ieee 저널에 기고된 일곱가지 위협 분류를 통해 알아볼 수 있습니다.Input Validation and Representation - 입력 데이터 검증 및 표현메타문자, 대체인코딩 및 숫자표현으로 인해 입력 유효성 및 표현 문제가 발생합니다. 때로는 개발자들이 입력값 검증을 전혀 안하기도 하는데, 일단 검증을 할꺼라면 블랙리스.. 2019. 2. 12.
[시큐어 코딩/Secure Coding] 입력 데이터 검증 및 표현 - 상대 경로 탐색 참고: 안드로이드 시큐어코딩 가이드 참고: CWE-23: Relative Path Traversal 참고: Seven pernicious kingdoms설명파라미터를 통하여 제한된 디렉토리 내에서만 파일접근을 허용하도록 만들 경우, 적절한 검증 절차를 거치지 않으면 ‘..’ 같은 문자열을 통해 해당 디렉토리 외부에 있는 경로에 대한 접근을 허용하는 문제가 발생할 수 있습니다.안전한 코딩기법모든 입력을 악의적 입력이라 가정하고 좋은 입력만 허용하는 전략을 사용합니다. 즉 요구사항을 엄격히 준수하는 입력가능 허용 목록을 사용하고 엄격히 따르지 않는 모든 입력은 거부하는 것입니다. 상기 서술한 바와 같이 상대경로 접근과 같은 문자열이 파라미터로 넘어올 경우 원칙적으로 거부해야 하지만 그렇지 못할 경우 repl.. 2019. 2. 11.
[정보보안] 윈도우즈의 주요 로컬 보안 정책과 설명 (secpol.msc) '로컬 보안 정책'은 사용자 컴퓨터의 보안 설정을 변경할 수 있는 도구로, 로컬 보안 정책 설정창을 여는 방법은 '윈도우버튼+r'을 누르고 secpol.msc를 입력하여 사용합니다.암호는 복잡성을 만족해야 함 설명: 이 보안 설정은 암호가 복잡성 요구 사항을 만족해야 하는지 여부를 결정합니다.사용자의 계정 이름이나 연속되는 문자 2개를 초과하는 사용자 전체 이름의 일부를 포함하지 않음길이가 최소한 6자 이상이어야 함다음 네 가지 범주 중 세 가지의 문자를 포함해야 함영문 대문자(A - Z)영문 소문자(a - z)기본 10개 숫자(0 - 9)알파벳 이외의 문자(예: !, $, #, %) 최근 암호 기억 설명: 이 보안 설정은 기존 암호를 다시 사용하기 위해 먼저 사용자 계정에 연결해야 하는 고유한 새 암호.. 2016. 5. 23.
[정보보안] arp spoofing (arp 스푸핑) address resolution protocol(arp)는 tcp/ip의 주요한 프로토콜로 ip 주소의 물리적 주소(mac address)를 알아낼 목적으로 만들어졌습니다. application 레이어의 네트워크 프로그램은 ip 주소를 사용해 다른 호스트와 통신하는 반면 datalink 레이어는 네트워크 카드에 영구적으로 각인되어있는 물리적 주소를 사용합니다. 패킷 포멧은 다음과 같습니다. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HW type = 0x0001 (Ethernet) | Protoco.. 2016. 5. 10.