Wireshark는 패킷 분석도구이다.
첫화면은 인터페이스를 지정하고 캡쳐하는 트래픽의 범위를 좁히기 위해 필터를 적용할 수 있는 기본 페이지이다.
인터페이스 이름 옆에 그래프는 인터페이스의 활동을 보여준다. 평평한 막대가 있는 경우 캡쳐를 시도하는 것이 쓸모가 없을 수 있다.
라이브 패킷 캡쳐
녹색리본으로 이동하여 Manage Capture Filters를 선택하면 사용 가능한 필터 목록을 볼 수 있다.
필터를 선택했으면(필수아님) 인터페이스를 클릭하여 캡쳐를 시작할 수 있다.
각 패킷은 다음의 정보를 제공한다.
- 패킷번호
- 시간
- source
- Destination
- protocol
- 길이
- 패킷정보
1. 수집방법
PCAP에서 각 프로토콜을 분석하기 전에 PCAP 파일을 수집하는 방법을 이해해야 한다.
라이브 패킷 캡쳐를 수집하고 모니터링하기 전에 먼저 확인해야 할 몇가지 사항이 있다.
- 샘플 캡쳐로 시작하여 모든 것이 올바르게 설정되었고 트래픽을 성공적으로 캡쳐하고 있는지
- 네트워크 크기에 따라 패킷 수를 처리할 수 있는 충분한 컴퓨터 성능
- 모든 패킷 캡쳐를 저장할 디스크 공간
네트워크 탭
네트워크 탭은 케이블 사이를 물리적으로 탭하는 물리적 임플란트 이며 이 기술은 일반적으로 Threat Hunting/DFIR 팀과 레드 팀에서 패킷을 스니핑하고 캡쳐하는데 사용한다.
와이어를 두드리는 두가지 수단이 있다.
첫번째는 하드웨어를 이용하여 와이어를 탭하고 트래픽이 올 때 가로 채는 것이다. 예로 뱀파이어 탭이 있다.
네트워크 탭을 설치하기 위한 또 다른 옵션은 인라인 네트워크 탭으로, 두 네트워크 장치 사이에 또는 '인라인'으로 설치한다. 탭은 탭을 통과할 때 패킷을 복제한다. 이 탭의 예는 매우 일반적인 Throwing Star LAN Tap이다.
MAC Flood
MAC Floods는 패킷을 능동적으로 스니핑하는 방법으로 레드 팀에서 일반적으로 사용하는 전술이다. MAC Flooding은 스위치에 스트레스를 주고 CAM 테이블을 채우기 위한 것이다. CAM 테이블이 채워지면 스위치는 더 이상 새 MAC 주소를 허용하지 않으므로 네트워크를 활성 상태로 유지하기 위해 스위치는 패킷을 스위치의 모든 포트로 보낸다.
참고: 이 기술은 극도의 주의를 기울여 명시적인 사전 동의를 얻어 사용해야 한다.
ARP Poisoning
ARP 중독은 레드 팀이 패킷을 능동적으로 스니핑하기 위해 사용하는 또 다른 기술이다. ARP Poisoning을 통해 호스트에서 모니터링 중인 시스템으로 트래픽을 리디렉션할 수 있다. 이 기술은 MAC Flooding과 같은 네트워크 장비에 스트레스를 주지 않지만 네트워크 탭과 같은 다른 기술을 사용할 수 없는 경우에만 주의해서 사용해야 한다.
이러한 방법을 이전 작업의 트래픽 캡처에 대한 이전 지식과 결합하면 라이브 패킷 캡처를 처음부터 사전 예방적으로 모니터링하고 수집할 수 있다.
2. 캡쳐 필터링
필터링 연산자
- and - operator: and / &&
- or - operator: or / ||
- equals - operator: eq / ==
- not equal - operator: ne / !=
- greater than - operator: gt / >
- less than - operator: lt / <
논리 연산자 외의 다른 유용한 연산자(contains, matches, bitwise_and_operators)도 있다. 캡쳐가 크고 단일 패킷을 정확히 찾아야 할 때 유용할 수 있으니 익혀두는 것이 좋다.
ip 필터링 : 패킷에 포함된 특정 ip주소가 있는 패킷만 볼 수 있다.
ip.addr == IP_ADDRESS
SRC, DST 필터링 : 트래픽이 발생하는 소스, 대상별로 트래픽을 필터링할 수 있다.
ip.src == SRC_IP_ADDRESS
ip.dst == DST_IP_ADDRESS
TCP 필터링 : 필터링할 포트 또는 프로토콜을 설정할 수 있고 사용중인 비정상적인 프로토콜 또는 포트를 추적하려고 할 때 편리
tcp.port eq PORT or PROTOCOL_NAME
UDP 필터링
udp.port eq PORT or PROTOCOL_NAME
3. 패킷해부
패킷세부정보
캡쳐에서 패킷을 더블클릭하면 세부정보를 열 수 있다. 패킷은 OSI 모델에 따라 5~7개의 레이어로 구성된다.
- Frame(계층 1) : frame/packet과 OSI 모델의 물리 계층에 대한 세부 정보가 표시된다.
- Source[MAC](계층 2) : source, 대상 MAC 주소가 표시된다. OSI모델의 데이터 링크 계층
- Source[IP](계층 3) : source, 대상 IPv4 주소가 표시된다. OSI 네트워크 계층
- Protocol(계층 4) : source, 대상 포트와 함께 사용된 프로토콜(UDP/TCP)에 대한 세부정보가 표시된다. OSI 전송계층
- protocol 오류
- Application Protocol(계층 5) : HTTP, FTP, SMB등과 같이 사용되는 프로토콜에 대한 세부정보를 표시
- Application Data : Application별 데이터를 표시할 수 있는 계층 5의 확장이다.
4. ARP 트래픽
ARP(Address Resolution Protocol)은 ip 주소를 MAC 주소와 연결하는 데 사용되는 레이어 2 프로토콜이다. 여기에는 REQUEST, RESPONSE 메세지가 포함된다. 패킷을 식별하기 위해 메세지 헤더에는 두가지 작업 코드 중 하나가 포함된다.
- Request (1)
- Reply (2)
ARP 요청 패킷
Opcode 는 Operation code의 약자로 Request인지 Reply인지 알려준다.
Target MAC address 는 패킷이 요청하는 위치이며 아래 예에선 모두에게 브로드캐스트한다.
ARP 응답 패킷
Sender MAC address, Sender IP address와 같이 응답과 함께 전송된 정보를 얻을 수 있다.
5. ICMP 트래픽
ICMP(Internet Control Message Protocol)은 네트워크의 다양한 노드를 분석하는 데 사용된다. ping, traceroute와 같은 유틸리티와 함께 일반적으로 사용된다.
ICMP 트래픽
- Request
위와 같이 ping 요청 패킷에 대한 세부정보를 볼 수 있다.
패킷 세부정보에는 먼저 패킷 유형과 코드라는 점에 유의할 수 있는 몇가지 중요한 사항이 있다.
Type : 8 이면 request 패킷이고 0 이면 reply 패킷이다. 그 외의 다른 결과는 의심해봐야한다.
분석에 유용한 패킷 내에는 Timestamp와 data라는 두가지 세부정보가 있다. Timestamp는 핑이 요청된 시간을 식별하는데 유용할 수 있으며 경우에 따라 의심스러운 활동을 식별하는 데도 유용할 수 있다.
- Reply
6. TCP 트래픽
TCP(Transmission Control Protocol)은 시퀀싱 및 오류를 포함한 패킷 전달을 처리한다.
다음은 SYN 패킷의 세부정보이다. 우리가 확인할 주요 사항은 Suquence Number와 Acknowledgement Number이다.
이 경우 Acknowledgement Number가 0이기 때문에 포트가 열리지 않았음을 알 수 있다.
Edit > Prefernces > Protocol > TCP에서 relative sequence numbers 를 해제하면 원래의 Sequence Number를 확인할 수 있다.
7. DNS 트래픽
DNS 프로토콜은 ip 주소로 이름을 확인하는데 사용된다. 다음은 확인해야할 주요 항목들이다.
- Query-Response
- DNS-Servers Only
- UDP
이들 중 하나라도 제자리에 없다면 의심해봐야 한다.
DNS Query:
아래 쿼리를 보면 패킷을 분석하는 데 사용할 수 있는 두가지 정보가 있다.
우리가 볼 수 있는 정보의 첫번째 비트는 쿼리가 시작된 위치이다. 이 경우 UDP 53이다. 즉 이 패킷은 해당 검사를 통과했음을 의미한다. TCP 53이면 의심스러운 트래픽으로 분류된다.
DNS Response:
query 패킷과 유사하지만 reponse 패킷은 쿼리를 확인하는데 사용할 수 있는 응답도 포함되어있다.
8. HTTP 트래픽
HTTP(Hyper Text Transfer Protocol)은 World Wide Web에서 일반적으로 사용되는 포트로 일부 웹사이트에서 사용되지만 암호화된 HTTPS가 더 일반적이다. HTTP는 웹페이지와 같은 것을 수신하기 위해 웹 서버에 GET, POST 요청을 보내는 데 사용된다. HTTP를 분석하는 방법을 알면 SQLi, Web Shell, 기타 웹 관련 공격 벡터와 같은 것을 빠르게 찾아내는 데 도움이 될 수 있다.
위의 패킷처럼 HTTP는 데이터 스트림이 암호화되지 않기 때문에 쉽게 정보를 수집할 수 있다. 패킷에서 수집할 수 있는 중요한 정보 중 일부는 Request URI, File Data, Server이다.
WireShark의 내장 기능을 이용하여 데이터를 요약, 분석할 수 있다. Statistics > Protocol Hierarchy로 이동하여 패킷 불일치 정보를 얻을 수 있다.
file > Export Objects > HTTP 로 이동하면 위의 방식과 유사하게 패킷 불일치를 식별할 수 있다.
Statistics > Endpoints 로 이동하면 불일치가 발생하는 위치를 식별하는 데 유용한 정보를 얻을 수 있다.
9. HTTPS 트래픽
HTTPS(Hyper Text Transfer Protocol Secure)는 패킷 분석 관점에서 가장 성가신 프로토콜 중 하나로 암호화된 키를 decoding하는 일련의 단계를 밟아야한다.
암호화된 정보를 보내기 전에 클라이언트와 서버는 안전한 터널을 만들기 위해 다양한 단계에 동의해야 한다.
- 클라이언트와 서버가 프로토콜 버전에 동의
- 클라이언트와 서버가 암호화 알고리즘 선택
- 클라이언트와 서버는 서로 인증할 수 있다. 이 단계는 선택 사항이다
- 공개 키로 보안 터널을 만든다.
다음은 SSLv2 레코드 레이어, 핸드셰이크 유형, SSL 버전을 보여주는 Client Hello 패킷이다.
Client Hello 패킷과 유사한 정보를 보내는 Server Hello 패킷이지만 이번에는 세션 세부 정보, SSL 인증서 정보가 포함되어있다.
아래는 클라이언트 키 교환 패킷이다. 핸드셰이크의 이 부분은 클라이언트와 서버 간의 추가 메시지를 암호화하는 데 사용할 공개 키를 결정한다. 다음 패킷에서 서버는 공개 키를 확인하고 보안 터널을 생성한다. 이 시점 이후의 모든 트래픽은 위에 나열된 합의된 사양을 기반으로 암호화된다.
이제 클라이언트와 서버간 트래픽이 암호화되었으며 두 호스트 간에 전송되는 데이터 스트림의 암호를 해독하기 위해선 비밀키가 필요하다.
위의 패킷 캡쳐를 보면 모든 요청이 암호화된 것을 알 수 있다. 자세히 살펴보면 HTTPS 핸드셰이크와 암호화된 요청 자체를 볼 수 있다. Edit > Preferences > Protocols > TLS > [+]에서 RSA Key를 로드할 수 있다.
다시 패킷 캡쳐로 돌아가보면 데이터 스트림이 이제 암호화되지 않은 것을 볼 수 있다.
10. 익스플로잇 PCAP 분석
Zerologon(CVE-2020-1472)는 최근 Windows Active Directory Exploit에서 PCAP 파일을 수집했다. PCAP 파일 내의 시나리오에는 사설 IP가 192.168.100.6인 Windows 도메인 컨트롤러와 사설 IP가 192.168.100.128인 공격자가 포함되어 있다. PCAP를 분석하고 발생한 사건에 대한 가설을 세우는 단계를 살펴보겠다.
1. 공격자 식별
OpenVPN, ARP 등의 정상적인 트래픽이 표시된다. 그런 다음 이 경우 DCERC 및 EPM에서 알 수 없는 프로토콜로 알려진 것을 식별하기 시작한다.
패킷을 보면 192.168.100.128이 모든 요청을 보내고 있음을 알 수 있으므로 공격자라고 가정할 수 있다. 이 IP에서 오는 패킷을 계속 조사하여 범위를 좁힐 수 있습니다.
2. Zerologan POC 연결 분석
우리는 IOC(Indicators of Compromise 침해 지표)에 대해 알고 있어야 한다. 이것은 Threat Intelligence로 알려져 있다. 이 경우 Zerologon 익스플로잇에 대한 배경 지식이 있었다면 익스플로잇이 다중 RPC 연결을 사용하고 DCERPC가 PCAP로 확인할 수 있는 시스템 계정 암호 변경을 요청한다는 것을 알게 될 것이다.
3. Secretsdump SMB 분석
PCAP를 더 자세히 살펴보면 SMB2/3 트래픽과 DRSUAPI 트래픽을 볼 수 있다. 공격에 대한 사전 지식을 통해 우리는 이것이 secretsdump를 사용하여 해시를 덤프한다는 것을 알고 있다. Secretsdump는 이를 수행하기 위해 SMB2/3, DRSUAPI를 남용하므로 이 트래픽이 secretsdump라고 가정할 수 있다.
각 익스플로잇과 공격은 고유한 아티팩트와 함께 제공된다. 이 경우 발생한 일과 발생한 이벤트의 순서가 명확하다. 공격자를 식별하면 Threat Hunting 또는 DFIR 팀에 속한 경우 사건을 식별 및 격리하고 보고하는 다른 단계로 이동해야 한다.
Ref
'네트워크 보안 > 보안' 카테고리의 다른 글
취약점 (0) | 2021.12.30 |
---|---|
[Pentesting] Nmap 라이브 호스트 검색 (0) | 2021.12.29 |
[Pentesting] Metasploit (01) (0) | 2021.12.28 |
[Pentesting] MetaSploit (00) (0) | 2021.12.27 |
[Contents] Google Dorking (0) | 2021.12.27 |