정보보안

모의해킹 기술면접 준비

화이트해커 Luna 🌙 2023. 4. 6. 01:58
728x90
반응형

 

면접 전 알아야 할 내용


 

* 사용자가 브라우저를 통해 웹사이트에 접속하는 과정 이해

 - Proxy 개념 및 이해
 - Request와 Resopose // Server와 Clinet

 

 

사용자가 브라우저를 통해 웹사이트에 접속하는 과정은 다음과 같습니다.

  1. 사용자가 웹 브라우저에 웹 사이트의 URL을 입력합니다.
  2. 브라우저는 URL을 해석하여 해당 웹 사이트의 IP 주소를 찾습니다. 이때, DNS 서버를 통해 IP 주소를 찾을 수 있습니다.
  3. 브라우저는 찾은 IP 주소로 HTTP 요청을 보냅니다.
  4. 해당 IP 주소를 가진 서버는 요청을 받고, 요청에 대한 적절한 응답을 생성합니다.
  5. 서버는 응답을 클라이언트(브라우저)로 보냅니다.
  6. 브라우저는 응답을 받아 화면에 출력합니다.

Proxy는 클라이언트와 서버 사이에 위치하여, 클라이언트의 요청을 대신 받아서 서버로 전달하고, 서버의 응답을 클라이언트로 전달하는 중개자 역할을 합니다. Proxy를 사용하면 클라이언트와 서버 사이에 보안성을 높일 수 있고, 더 나은 성능을 제공할 수도 있습니다.

 

HTTP 요청과 응답은 서버와 클라이언트 간의 통신을 위한 프로토콜입니다. 클라이언트는 서버에게 HTTP 요청을 보내고, 서버는 요청을 받아 적절한 응답을 보내는 것입니다. 이때 요청과 응답에는 다양한 정보가 포함될 수 있습니다. 예를 들어, 요청에는 HTTP 메소드(GET, POST, PUT 등), 요청 URI, 헤더 등이 포함될 수 있고, 응답에는 HTTP 상태 코드(200, 404, 500 등), 응답 바디 등이 포함될 수 있습니다.

 

서버와 클라이언트는 HTTP 프로토콜을 기반으로 통신합니다. 클라이언트는 HTTP 요청을 생성하여 서버에 전송하고, 서버는 해당 요청에 대한 적절한 응답을 생성하여 클라이언트로 전송합니다. 이때, 클라이언트와 서버는 각각 다른 컴퓨터 또는 디바이스에서 실행되는 프로그램이며, HTTP를 통해 통신할 수 있습니다.

 


* TCP Header 이해

 - TCP 헤더에서 Sequence number 이해
 - TCP 헤더에서 Acknoloedgment number 이해

 

TCP 헤더는 TCP 프로토콜을 사용하여 통신하는 데 필요한 정보를 담고 있습니다. TCP 헤더는 20바이트로 구성되며, 다음과 같은 정보를 담고 있습니다.

  • 소스 포트와 대상 포트: 통신하는 어플리케이션을 식별하기 위한 포트 번호입니다.
  • 시퀀스 번호: 데이터의 순서를 식별하기 위한 번호입니다.
  • 확인 응답 번호: 데이터의 수신 여부를 확인하기 위한 번호입니다.
  • 데이터 오프셋: TCP 헤더 길이를 나타내는 값입니다.
  • 제어 비트: TCP 프로토콜에서 사용하는 제어 정보를 담고 있습니다.
  • 창 크기: 수신자가 처리할 수 있는 데이터 양을 나타내는 값입니다.
  • 체크섬: 오류 검출을 위한 값입니다.
  • 긴급 포인터: 긴급한 데이터를 전송하는 경우 사용하는 값입니다.

 

TCP 헤더에서 Sequence number는 데이터의 순서를 식별하기 위한 번호입니다. 이 번호는 데이터의 첫 번째 바이트의 위치를 나타냅니다. TCP 프로토콜은 데이터를 여러 개의 패킷으로 분할하여 전송할 수 있기 때문에, Sequence number를 사용하여 데이터의 순서를 유지합니다.

 

TCP 헤더에서 Acknowledgment number는 데이터의 수신 여부를 확인하기 위한 번호입니다. 이 번호는 수신자가 다음에 기대하는 데이터의 Sequence number를 나타냅니다. 즉, Acknowledgment number는 이전에 수신한 데이터까지는 정상적으로 수신되었음을 확인하고, 다음에 수신할 데이터의 위치를 알려주는 역할을 합니다. 이를 통해 송신자는 데이터 전송의 성공 여부를 파악하고, 필요한 경우 재전송 등의 조치를 취할 수 있습니다.

 


* TCP Flags 이해

 - TCP 헤더에서 Flag부분의 대한 확실한 이해
 - TCP 상태전이도를 보고 설명이 가능해야 함

 

TCP 프로토콜에서 Flag는 TCP 헤더의 제어 비트(Control Bits)를 나타냅니다. 이 Flag는 TCP 통신 과정에서 각각의 패킷이 어떤 역할을 수행하고 있는지를 나타내며, 총 6개의 Flag가 존재합니다.

  1. SYN(Synchronize) Flag: TCP 연결을 설정하는 데 사용됩니다. SYN Flag가 설정된 패킷을 송신하면, 수신측은 ACK와 SYN Flag를 모두 설정한 패킷을 송신하여 연결을 수립합니다.
  2. ACK(Acknowledgment) Flag: 패킷 수신 여부를 확인하는 데 사용됩니다. ACK Flag가 설정된 패킷을 수신하면, 송신측은 해당 패킷이 정상적으로 수신되었음을 확인하고, 다음 패킷을 전송합니다.
  3. FIN(Finish) Flag: TCP 연결을 종료하는 데 사용됩니다. FIN Flag가 설정된 패킷을 송신하면, 수신측은 해당 연결을 종료합니다.
  4. RST(Reset) Flag: TCP 연결을 비정상적으로 종료하는 데 사용됩니다. RST Flag가 설정된 패킷을 송신하면, 수신측은 해당 연결을 강제로 종료하고, 초기 상태로 돌아갑니다.
  5. PSH(Push) Flag: 데이터 전송을 강제로 요청하는 데 사용됩니다. PSH Flag가 설정된 패킷을 송신하면, 수신측은 해당 패킷을 즉시 처리합니다.
  6. URG(Urgent) Flag: 긴급한 데이터 전송을 요청하는 데 사용됩니다. URG Flag가 설정된 패킷을 송신하면, 수신측은 해당 패킷을 우선적으로 처리합니다.

TCP의 상태전이도는 TCP 연결의 상태 변화를 나타내는 다이어그램으로, 3-way handshake를 통해 연결이 성공적으로 수립되면 ESTABLISHED 상태로 진입합니다. 이후 데이터 전송이 이루어지면서 FIN Flag가 설정된 패킷이 송수신되면, CLOSE_WAIT, LAST_ACK, TIME_WAIT 상태를 거쳐서 연결이 종료됩니다. 또한, 비정상적인 상황이 발생하면, RESET 상태로 전이됩니다. 이를 통해 TCP 연결의 상태 변화를 쉽게 파악할 수 있습니다.

 


* TCP, UDP 차이

 - TCP와 UDP의 가장 차이점을 설명

 

 

TCP와 UDP는 모두 인터넷 프로토콜 중 하나로, 데이터를 전송하는 방식에 차이가 있습니다.

 

TCP는 신뢰성 있는 데이터 전송을 보장하고, 연결 지향적인 프로토콜입니다. 즉, 데이터를 전송하기 전에 연결을 수립하고, 데이터 전송이 완료된 후에는 연결을 종료합니다. 이에 따라 데이터의 손실과 중복 전송을 방지하며, 데이터의 정확한 전달을 보장합니다.

 

반면, UDP는 비신뢰성이며, 연결 지향적이지 않은 프로토콜입니다. 데이터 전송을 위한 연결 수립과 종료가 없으며, 데이터 전송 중 손실이 발생해도 재전송을 하지 않습니다. 이에 따라 TCP보다 전송 속도가 빠르지만, 데이터 전송의 신뢰성은 보장되지 않습니다.

 

따라서, TCP는 신뢰성 있는 데이터 전송이 필요한 애플리케이션(예: 이메일, 파일 전송)에 적합하며, UDP는 데이터 전송 속도가 중요한 애플리케이션(예: 온라인 게임, 스트리밍 서비스)에 적합합니다.

 


* TCP 3Way Hanshake, 4Way Hanshake 과정 및 차이점

 - 위의 TCP 상태천이도를 보고 설명이 가능해야 함

 

TCP 3-way handshake는 클라이언트와 서버가 데이터 전송을 시작하기 전에 연결을 수립하는 과정입니다. 클라이언트가 SYN 패킷을 서버에 보내고, 서버는 SYN-ACK 패킷을 클라이언트에 보내면, 클라이언트는 ACK 패킷을 서버에 보내면서 연결이 수립됩니다.

 

TCP 4-way handshake는 데이터 전송이 완료되어 연결을 종료하기 위한 과정입니다. 클라이언트나 서버 측에서 FIN 패킷을 보내면, 상대방은 ACK 패킷을 보내고, 나머지 한 쪽에서도 FIN 패킷을 보내면 상대방은 다시 ACK 패킷을 보내고 연결이 종료됩니다.

 

TCP 4-way handshake는 3-way handshake에서 수신측에서도 FIN 패킷을 보내야 한다는 차이점이 있습니다. 따라서 연결을 종료할 때는 데이터 전송이 완료되었는지 확인하기 위해 상대방의 응답을 기다리는 단계가 추가되는 것입니다. 이로 인해 TCP는 데이터 전송의 신뢰성을 보장할 수 있습니다.


* URL, URI 차이

 - 정확한 개념 차이 인식

 

URL은 Uniform Resource Locator의 약자로, 인터넷에서 특정한 리소스의 위치를 가리키는 문자열입니다. 즉, 특정 웹페이지의 주소를 나타내는 것입니다.

 

URI는 Uniform Resource Identifier의 약자로, 인터넷에서 특정한 리소스를 식별하는 문자열입니다. URL도 URI의 일종으로, URI는 URL뿐만 아니라 URN(Uniform Resource Name)도 포함합니다.

 

즉, URI는 특정 리소스를 식별하는 문자열이며, URL은 리소스의 위치를 나타내는 특별한 형태의 URI입니다. URI는 인터넷에서 특정한 리소스를 가리키는 통합된 방식을 제공하여, 인터넷 상에서 서로 다른 리소스를 구분하고 관리하는 데 사용됩니다


* HTTP, HTTPS 에 대한 이해

 - SSL과 TLS에 대한 이해

 

HTTP는 인터넷에서 데이터를 주고받는 프로토콜 중 하나로, 웹 브라우저와 웹 서버 간의 통신에 사용됩니다.

HTTP는 기본적으로 평문으로 데이터를 전송하기 때문에 보안상의 문제가 발생할 수 있습니다.

 

HTTPS는 HTTP의 보안 버전으로, SSL 또는 TLS 프로토콜을 사용하여 데이터를 암호화합니다.

SSL(Secure Socket Layer)은 HTTPS에서 사용되는 보안 프로토콜 중 하나입니다.

 

이후에 SSL은 TLS(Transport Layer Security)로 대체되었습니다.

 

HTTPS는 웹 브라우저와 웹 서버 간의 통신에 사용되며, 인증서를 사용하여 웹 서버의 신원을 확인하고 데이터를 암호화하여 보안을 강화합니다.

 

따라서, HTTP는 데이터를 평문으로 전송하기 때문에 보안에 취약하며, HTTPS는 SSL 또는 TLS를 사용하여 데이터를 암호화하여 보안을 강화한 프로토콜입니다.


* HTTP Method 종류 및 이해

 - POST와 GET에 대한 확실한 차이점과 추가적인 method 조사

 

 

HTTP Method는 클라이언트가 서버에 요청할 때 사용하는 메서드로, 가장 많이 사용되는 메서드로는 GET과 POST가 있습니다.

 

GET은 서버로부터 정보를 요청할 때 사용하는 메서드로, URL에 데이터를 포함하여 요청하며, 보안상의 이유로 데이터 전송량이 적고, 캐싱이 가능합니다. 하지만 URL에 데이터가 노출되기 때문에 보안상 취약합니다.

 

POST는 서버로 데이터를 전송할 때 사용하는 메서드로, HTTP 요청 본문에 데이터를 포함하여 요청합니다. GET에 비해 보안상 안전하지만, 캐싱이 불가능하고 데이터 전송량이 많아지면 느려질 수 있습니다.

 

그 외에도 PUT, DELETE, HEAD, OPTIONS 등의 메서드가 있습니다.

PUT은 서버에 새로운 리소스를 추가하거나 기존 리소스를 업데이트할 때 사용합니다.

DELETE는 서버의 리소스를 삭제할 때 사용합니다.

HEAD는 GET 메서드와 유사하지만, 응답 본문을 포함하지 않고 응답 헤더만을 반환합니다.

OPTIONS는 서버가 지원하는 HTTP 메서드를 확인하기 위해 사용합니다.


* HTTP Response Code에 대해서 설명

 - 100/200/300/400/500의 특징과 각 대표코드 설명

 

 

HTTP Response Code는 서버가 클라이언트에게 반환하는 응답 코드를 말합니다. 각 응답 코드는 세 자리 숫자로 구성되며, 다음과 같은 범주에 속합니다.

 

  • 1xx (Informational): 요청이 수신되었으며 처리 중임을 나타냅니다.
  • 2xx (Success): 요청이 성공적으로 처리되었음을 나타냅니다.
  • 3xx (Redirection): 클라이언트가 추가 작업을 수행해야 함을 나타냅니다.
  • 4xx (Client Error): 클라이언트 측의 오류로 인해 요청이 처리되지 않았음을 나타냅니다.
  • 5xx (Server Error): 서버 측의 오류로 인해 요청이 처리되지 않았음을 나타냅니다.

 

 

대표적인 HTTP Response Code에는 다음과 같은 것들이 있습니다.

 

  • 200 OK: 요청이 성공적으로 처리되었음을 나타냅니다.
  • 201 Created: 요청이 성공적으로 처리되어 새로운 리소스가 생성되었음을 나타냅니다.
  • 301 Moved Permanently: 요청한 리소스가 다른 URL로 이동되었음을 나타냅니다.
  • 400 Bad Request: 클라이언트의 요청이 잘못되었거나 서버에서 처리할 수 없음을 나타냅니다.
  • 404 Not Found: 요청한 리소스가 존재하지 않음을 나타냅니다.
  • 500 Internal Server Error: 서버 측의 오류로 인해 요청을 처리할 수 없음을 나타냅니다.

 


* HTTP 헤더

 - HTTP 헤더의 General 헤더, Entity헤더, Request헤더, Response헤더 이해

 

HTTP 헤더는 HTTP 요청과 응답의 메타데이터를 전송하는데 사용됩니다. HTTP 헤더는 크게 General 헤더, Entity 헤더, Request 헤더, Response 헤더로 구성됩니다.

  • General 헤더: 요청과 응답 모두에서 사용 가능한 헤더입니다. 예를 들어, Cache-Control, Connection, Date, Pragma 등이 있습니다.
  • Entity 헤더: 엔티티 바디와 관련된 헤더입니다. Content-Encoding, Content-Language, Content-Type 등이 있습니다.
  • Request 헤더: 클라이언트 측에서 서버에 요청을 보낼 때 사용되는 헤더입니다. Host, Accept, Accept-Language, User-Agent 등이 있습니다.
  • Response 헤더: 서버에서 클라이언트에 응답을 보낼 때 사용되는 헤더입니다. Server, Content-Length, Content-Encoding, Content-Type 등이 있습니다.

HTTP 헤더는 각각의 헤더 필드가 키-값 쌍으로 이루어진다는 공통점을 가지고 있습니다. 이러한 HTTP 헤더는 클라이언트와 서버간 통신의 기본 요소 중 하나이며, 클라이언트와 서버간 통신의 요청과 응답을 보다 상세하게 지정할 수 있도록 해줍니다.


* X-Forwerded-For 헤더

 - XFF를 왜 사용하는지와 XFF 외 X-Forwarded-Host, X-Forwarded-Proto 등에 대해 이해

 

X-Forwarded-For (XFF)는 프록시나 로드밸런서와 같은 중간 서버를 거쳐 웹 서버에 접근하는 클라이언트의 원래 IP 주소를 확인하기 위해 사용됩니다. 예를 들어, 여러 개의 로드밸런서를 거쳐 웹 서버에 접근하는 경우, XFF 헤더를 사용하여 로드밸런서의 IP 주소뿐 아니라, 클라이언트의 원래 IP 주소도 함께 전송할 수 있습니다.

 

XFF 외에도, X-Forwarded-Host 헤더는 클라이언트의 요청한 호스트 이름을 포함하고, X-Forwarded-Proto 헤더는 클라이언트와 서버 간에 사용되는 프로토콜 (HTTP 또는 HTTPS)을 포함합니다. 이러한 X-Forwarded 헤더는 웹 서버에서 무분별한 접근을 차단하는 보안 정책에서 사용되기도 합니다.


* OWASP TOP 10 이해

 - 기본공격 포함 : Bruteforce, XSS, CSRF, SSRF, RFI, LFI 등등

 

OWASP TOP 10은 보안 위협에 대한 표준 목록으로, 매년 업데이트됩니다. 2021년 버전에서는 다음과 같은 10가지 보안 위협이 포함됩니다.

  1. A01:2021 - Broken Access Control (접근 제어 위반)
  2. A02:2021 - Cryptographic Failures (암호화 실패)
  3. A03:2021 - Injection (인젝션)
  4. A04:2021 - Insecure Design (보안 취약한 설계)
  5. A05:2021 - Security Misconfiguration (보안 구성 오류)
  6. A06:2021 - Vulnerable and Outdated Components (취약하거나 오래된 구성 요소)
  7. A07:2021 - Identification and Authentication Failures (식별 및 인증 실패)
  8. A08:2021 - Software and Data Integrity Failures (소프트웨어 및 데이터 무결성 실패)
  9. A09:2021 - Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)
  10. A10:2021 - Server-Side Request Forgery (서버 측 요청 위조)

각 보안 위협은 자세한 내용이 있으며, 많은 종류의 애플리케이션에서 발생하는 위협으로 분류됩니다. 이러한 보안 위협으로부터 보호하기 위해서는 적절한 보안 조치를 취해야 합니다.


* DNS CDN 에 대한 이해

 - DNS의 기본 개념(마스터/슬레이브 등) 및 CDN에 개념

 

DNS는 Domain Name System의 약자로, IP 주소를 도메인 이름으로 변환하거나, 그 반대로 도메인 이름을 IP 주소로 변환하는 작업을 수행하는 인터넷 시스템입니다. DNS는 일반적으로 마스터-슬레이브 아키텍처를 사용하여 동작하며, 마스터 서버에서 변경된 DNS 레코드를 슬레이브 서버에 전파하는 방식으로 동작합니다.

 

CDN은 Content Delivery Network의 약자로, 전 세계적으로 분산된 서버 네트워크를 이용하여 웹 콘텐츠를 효율적으로 전송하는 기술입니다. CDN은 사용자들에게 빠른 콘텐츠 로딩 속도와 안정적인 서비스 제공을 위해 사용됩니다. 일반적으로 CDN은 정적인 콘텐츠(이미지, 동영상, 문서 등)을 캐싱하고, 최적의 서버를 선택하여 콘텐츠를 전송하는 방식으로 동작합니다.

 


* TAP, IPSEC, VPN, LB, NAT, Subnet 에 대한 이해

 - 해당 개념을 찾고 설명할 수 있어야함. 특히 IPSec과 VPN은 연결지어 설명할 것

 

TAP (Transparent Access Point)은 네트워크 장비에서 가상 인터페이스를 생성하고, 이를 통해 패킷을 전송하는 방식을 의미합니다. IPSEC (IP Security)은 네트워크 보안 프로토콜로서, 인증, 기밀성, 무결성을 제공하는 프로토콜입니다.

VPN (Virtual Private Network)은 인터넷을 통해 안전하게 연결할 수 있는 가상 사설망으로, IPSEC을 사용하여 VPN 연결을 구성합니다.

LB (Load Balancer)는 여러 대의 서버에 대한 부하를 분산하는 장비입니다.

NAT (Network Address Translation)은 사설 IP 주소와 공인 IP 주소 간의 변환을 담당합니다.

Subnet (서브넷)은 하나의 대규모 네트워크를 작은 단위로 분할하여 관리할 수 있도록 만든 개념입니다.


* DoS, DDoS, DRDoS 종류, 각 종류별 패킷의 특징

 - 각 서비스 거부공격에 대한 특징과 3가지 종류에 대한 차이점 진행
 - 외로 CCattack에 대해서 학습 필요

 

DoS (Denial of Service) 공격은 네트워크나 시스템을 공격하여 서비스 거부 상태로 만드는 공격입니다.

DDoS (Distributed Denial of Service) 공격은 다수의 컴퓨터를 이용하여 공격하는 것이며,

DRDoS (Distributed Reflection Denial of Service) 공격은 공격 대상에 대한 반사 공격을 활용하는 것입니다.

 

DoS 공격은 한 대의 컴퓨터에서 공격을 수행하므로 패킷의 출발지 IP 주소는 일관되며, 대개 TCP SYN 패킷, ICMP 에코 요청 패킷 등이 사용됩니다.

 

DDoS 공격은 다수의 컴퓨터에서 동시에 공격을 수행하므로 패킷의 출발지 IP 주소가 분산되며, 대개 공격 대상 서버에 대한 다량의 TCP SYN 패킷이나 UDP 패킷 등이 사용됩니다.

 

DRDoS 공격은 반사 공격을 활용하므로 공격 대상에 대한 반사 서비스와 대량의 ICMP 에코 요청 패킷이나 UDP 패킷 등이 사용됩니다.

 

CC (Credential Stuffing/Cracking) 공격은 사용자 계정에 대한 로그인 시도를 반복적으로 시도하는 공격입니다. 대부분의 CC 공격은 다수의 컴퓨터에서 대량의 로그인 시도를 수행하므로 DDoS 공격과 유사한 특징을 가지고 있습니다.

 

 


* BPS, CPS, PPS 에 대한 이해

 - DoS, DDoS, DRDoS 가 서버에 미치는 영향에 대한 이해

 

 

BPS, CPS, PPS는 모두 네트워크의 데이터 전송 속도를 측정하는 지표입니다.

 

DoS, DDoS, DRDoS 공격은 서버에 많은 양의 패킷을 보내어 서버의 자원을 고갈시키는 공격입니다.

이러한 공격으로 인해 서버의 성능이 저하되어 서비스가 중단되는 경우가 많습니다.

 

이때, BPS (Bits Per Second), CPS (Connections Per Second), PPS (Packets Per Second)는 서버가 처리할 수 있는 최대 속도를 초과하여 공격이 발생하는 경우 서버에 심각한 영향을 끼치게 됩니다.

 

따라서, 서버의 BPS, CPS, PPS 처리 능력을 고려하여 적절한 대응 방안을 수립해야 합니다.

 


* Encoding, Decoding 의 이해

 - URL, Base64 등 인코딩과 디코딩에 대해 설명

 

인코딩은 데이터를 다른 형식으로 변환하는 것을 의미합니다.

URL 인코딩은 URL에서 사용할 수 없는 문자를 안전하게 전송할 수 있도록 퍼센트 인코딩을 사용하여 URL을 인코딩합니다.

Base64 인코딩은 8 비트 이상의 이진 데이터를 ASCII 문자로 인코딩하는 방법입니다.

디코딩은 인코딩 된 데이터를 원래 데이터로 변환하는 것을 의미합니다.

URL 디코딩 및 Base64 디코딩은 각각 인코딩 된 데이터를 다시 원래 형태로 디코딩하는 과정입니다.

 


* 악성코드 이해

 - 악성코드 종류
 - 악성코드 관련 용어 (워터링홀, Drive-by download 등)

 

악성코드는 다양한 종류가 있지만 대표적으로 바이러스, 트로이목마, 웜, 루트킷 등이 있습니다.

 

워터링홀은 특정 웹사이트에 악성코드를 삽입하여 해당 웹사이트를 방문하는 사용자들의 PC에 악성코드를 전파하는 공격 기술을 말합니다.

 

Drive-by download는 악성코드가 포함된 웹사이트를 방문하면 자동으로 다운로드 및 실행되는 공격 기술을 의미합니다.

 

이 외에도 피싱, 스팸 메일, 봇넷, 백도어 등 다양한 악성코드와 관련 용어가 있습니다.

 


* 악성코드 감염 시 피해 서버 특징 이해

 - C&C서버에 대한 이해, Reverse TCP에 대한 이해

 

악성코드 감염 시 피해 서버는 일반적으로 C&C 서버에 접속하여 악성 명령어를 수신하고 실행합니다. C&C 서버는 악성코드 제어를 위한 서버이며, 악성코드에 감염된 컴퓨터와 통신합니다. 이를 위해 악성코드는 주기적으로 C&C 서버에 연결하여 악성 명령어를 받고 실행합니다. Reverse TCP는 악성코드에서 C&C 서버로의 통신을 안정적으로 유지하기 위한 방법 중 하나로, C&C 서버가 악성코드로 연결되어 명령어를 전송하는 것이 아니라 악성코드에서 C&C 서버로 연결하여 명령어를 수신합니다. 이는 방화벽 등의 보안 장치에서 C&C 서버를 차단하더라도 악성코드의 통신을 방해하기 어렵게 만듭니다.

 


* 파일 매직넘버

 - 윈도우, 리눅스 실행파일, 압축파일 등 다양한 시그니쳐코드 조사

 

파일 매직넘버는 파일의 시작 부분에 위치하며, 해당 파일의 종류와 포맷을 판별하는데 사용됩니다. 예를 들어, 윈도우 실행 파일의 매직넘버는 MZ이며, ELF 포맷의 실행 파일의 매직넘버는 7F 45 4C 46입니다. 마찬가지로, 각종 압축파일의 매직넘버도 존재하며, 이를 이용하여 파일이 올바른 포맷인지 확인할 수 있습니다. 파일 매직넘버는 악성코드 탐지와 분석, 파일 형식에 맞는 처리를 위해 필수적으로 사용됩니다.

 


 

* 난독화

 - 난독화가 어떤 기능을 하는지, 왜 필요한지 이해

 

소스코드 난독화는 코드를 알아보기 어렵게 만드는 기술로, 주로 소프트웨어 보안에서 사용됩니다. 이를 통해 악성코드 분석 등을 방지하고, 코드의 저작권을 보호하는 등의 목적으로 사용됩니다. 일반적으로는 코드 내 변수명, 함수명, 제어문 등을 임의의 형태로 변경하거나, 중복 코드를 추가함으로써 코드의 가독성을 떨어뜨리고 해석을 어렵게 만들어 분석을 방해합니다.


* Snort 이해

 - Snort의 구조를 이해할 수 있어야 하고(헤더/옵션), 기본적인 커스텀룰 작성이 가능

 

 

Snort는 인터넷 상의 패킷을 실시간으로 모니터링하고, 특정한 패턴에 매칭되는 패킷을 탐지하여 경고를 발생시키는 인트라넷/인터넷 침입 탐지 시스템입니다.

 

Snort의 구조는 크게 헤더와 옵션으로 나눌 수 있습니다. 헤더는 Snort 룰에 대한 기본 정보를 담고 있으며, 옵션은 탐지 대상이 되는 패턴, 패킷 내용 및 알림을 위한 정보 등을 포함합니다.

 

 


* Wireshark 사용법

 - Wireshark를 진짜 많이 써볼 것, 필터링부터 패킷 조사 실시

 

 

Wireshark를 실행하면 네트워크 인터페이스 목록이 나타납니다. 캡처할 인터페이스를 선택하고 "Start" 버튼을 클릭하면 패킷 캡처가 시작됩니다. 이후 캡처된 패킷은 화면에 실시간으로 나타납니다.

 

패킷을 필터링하려면 Wireshark의 필터링 기능을 사용합니다. 예를 들어, HTTP 트래픽만 필터링하려면 "http" 또는 "tcp.port == 80"과 같은 필터를 적용합니다.

필터링 조건을 입력하고 "Apply" 버튼을 클릭하면 해당 조건에 맞는 패킷만 필터링되어 나타납니다.

 

패킷을 분석하려면 각 패킷의 헤더 정보와 데이터를 살펴보면 됩니다.

예를 들어, HTTP 패킷의 경우, HTTP 헤더와 데이터를 살펴봄으로써 HTTP 요청 및 응답 내용을 확인할 수 있습니다.

 

Wireshark는 다양한 프로토콜의 패킷을 지원하며, 각 프로토콜의 헤더 정보와 데이터를 분석할 수 있습니다.

 

Wireshark는 또한 패킷을 캡처하여 파일로 저장할 수 있습니다. 저장된 패킷 파일은 나중에 다시 열어서 분석할 수 있습니다.


* IDS, IPS, WAF, Anti-Virus, Anti-DDoS 의 개념 및 이해

 - 보안장비로서 어떠한 기능들을 하는지 이해

 

IDS(Intrusion Detection System): 네트워크상에서 이상한 행위를 감지하고 경고를 내보내는 장치

IPS(Intrusion Prevention System): IDS 기능에 더해 침입을 막는 기능도 수행하는 장치

WAF(Web Application Firewall): 웹서버 보안장비로서, 웹 어플리케이션 공격을 탐지하고 차단하는 장치

Anti-Virus: 악성코드를 탐지하고 치료 또는 삭제하는 소프트웨어 또는 하드웨어 장치

Anti-DDoS: DDoS 공격을 탐지하고 차단하는 장치

 


* 클라우드 서비스 이해

 - IaaS, PaaS, SaaS 등

 

클라우드 서비스는 인터넷을 통해 서버, 스토리지, 데이터베이스, 애플리케이션 등 다양한 IT 자원을 제공하는 것입니다. 클라우드 서비스는 대표적으로 IaaS, PaaS, SaaS로 구분됩니다.

  • IaaS (Infrastructure as a Service) : 서버, 스토리지, 네트워크 등 인프라를 가상화하여 제공하는 서비스입니다. 사용자는 가상화된 인프라를 이용하여 필요한 소프트웨어를 설치, 운영할 수 있습니다.
  • PaaS (Platform as a Service) : 애플리케이션을 개발, 실행할 수 있는 플랫폼을 제공하는 서비스입니다. 사용자는 애플리케이션 개발에 필요한 플랫폼을 제공받아 개발, 배포할 수 있습니다.
  • SaaS (Software as a Service) : 소프트웨어 애플리케이션을 인터넷을 통해 제공하는 서비스입니다. 사용자는 인터넷 브라우저를 통해 제공받은 소프트웨어를 이용할 수 있습니다.

 

 


 

실습하면 좋은 내용

 

# 웹 서비스 이해

* Apache, MySQL, PHP를 사용하여 간단한 실습용 웹 게시판 제작(불가능하면 취약한 오픈소스 활용)

 

# 생성한 게시판을 활용한 공격 실습 및 이해

 

 

* SQL Injection 실습

 - SQL Injetion 툴을 사용한 SQL Injection 공격 실습 및 패킷 분석

 - 수동 웹 공격 실습 및 패킷 분석

 - 웹 공격 페이로드가 DB에 어떻게 인입되는것인지 MySQL DB 에 접속해서 공격자가 입력한 페이로드의 쿼리 제현을 통한 공격 이해

 

* 웹 스캔 이해 및 실습

 - 웹 스캔 툴 실습 및 패킷 분석

 - 웹 스캔 결과 이해

 

* 웹쉘 및 Reverse connection 이해 및 실습

 - 웹쉘 업로드 실습 및 패킷 분석

 - 웹쉘 업로드 후 Reverse connection 실습 및 패킷 분석

 

# 취약 환경 구축 및 실습

 2022년 발표된 CVE 1개 이상 구축 및 테스트

 - 취약 시스템 구축 (Docker 사용)

 - CVE 실습 및 패킷 분석

 - 대응 방안

 - 탐지 패턴 생성

728x90
반응형

'정보보안' 카테고리의 다른 글

안드로이드 APK 분석 (디컴파일링, 리버싱)  (0) 2024.01.03
[정보보안기사] 정보보호 개요  (2) 2023.05.24
snort 룰  (10) 2023.03.09
snort rule 만드는법  (0) 2023.03.07