본문 바로가기

해커의 언어, 치명적 파이썬

4장 네트워크 트래픽 분석

소개: 오퍼레이션 오로라와 당연한 것을 놓친 이유


오퍼레이션 오로라(Operation Auroroa):

미국 포춘 100 회사 중 30개 이상을 대상으로 한 치밀하고 정교한 공격.

 

->공격자가 악성 자바스크립트가 삽입된 링크가 있는 이메일을 피해자들에게 전송

->링크를 클릭하면 중국에 있는 공격명령(command-and-control) 서버로 연결하는 악성코드가 브라우저를 통해 다운로드

->공격자는 악성코드를 사용하여 피해자의 시스템에 대한 접근권환 획득

 

 

IP 트래픽의 목적지는?-파이썬 방식


IP 주소가 실제로 물리적으로 어디에 위치하고 있는지 매핑할 수 있어야 한다. 이를 위해 맥스마인드에서 제공하는 무료 데이터 베이스를 사용한다.

GeoLiteCity(http://www.maxmind.com/app/geolitecity)

8년 사이에 많은 것이 변했나보다. geolite 데이터베이스를 찾기 위해 열심히 찾아보았다.

호락호락하지 않다. GeoLiteCity 데이터베이스가 있으면 IP 주소를 주, 우편번호, 국가이름, 위도 및 경도 같은 좌표로 표시할 수 있는데 이는 IP 트래픽을 분석하는데 도움을 준다.

https://support.maxmind.com/geoip-faq/geoip2-and-geoip-legacy-databases/ive-completed-my-geoip2-site-license-purchase-how-do-i-download-the-database/

 

I’ve completed my GeoIP2 site license purchase! How do I download the database? | MaxMind Support Center

We recommend using our GeoIP Update program to automate the download of binary format databases. Note that GeoIP Update does not work with our CSV files. You can download either binary or CSV format databases directly in the account portal here [login requ

support.maxmind.com

여기서 database를 다운 받아서 실행하면 될 것 같은데 나는 계속 실패했다.

 

printGeo.py

이 스크립트를 실행하면 공격대상의 IP 주소를 실제 물리적 주소로 표시할 수 있게 된다.

 

Dpkt로 패킷 분석하기

dpkt는 http://code.google.com/p/dpkt 에서 다운로드하여 설치할 수 있다.

printDirection.py

이 스크립트를 실행하면 소스 IP와 목적지 IP가 화면에 출력된다. 이 정보와 실제 물리적 위치를 위의 스크립트를 통해 매핑한다.

 

geoPrint.py

 

파이썬으로 구글 지도 만들기

가상 지구, 지도, 지리적 정보를 제공하는 구글 어스는 사용자가 KML 확장자로 텍스트 파일을 만들면 다양한 표시를 통합시킬 수 있다.

 

 

어나니머스가 정말 익명인 것일까? LOIC 트래픽 분석


LOIC(Low Orbit Ion Cannon)

- 어나니머스 해커 그룹이 개발한 DDoS 프로그램

- 공격대상에 대량의 UDP와 TCP 트래픽을 전송

- 첫 번째 모드 : 사용자는 공격대상 주소를 입력할 수 있음

- 두 번째 모드(HIVEMIND) : 사용자가 LOIC를 IRC 서버로 연결, 사용자들은 IRC에 연결된 사용자들이 자동으로 공격할 수 있는 공격대상 선정

 

Dpkt로 LOIC 다운로드 확인하기

LOIC를 http://sourceforge.net/projects/loic/ 에서 LOIC를 다운로드하기 전에 tcpdump 세션을 열어 포트 80번을 필터링하고 결과를 ASCII 형식으로 출력한다. 그런데 저렇게 된다. 뭐가 문제일까?

HTTP 트래픽을 처리, HTTP GET을 검사하여 압축된 LOIC 바이너리를 다운로드 했는지 확인하는 파이썬 스크립트이다. 스크립트를 실행하면, 몇 명의 사용자가 LOIC를 다운로드했다는 것을 알 수 있다.

 

 

IRC 명령어를 Hive에 파싱하기

이거 정말 문제이다.

대부분의 IRC 서버는 TCP 포트 6667번을 사용한다. IRC 서버로 전송되는 메시지의 목적지는 TCP 포트 6667번, IRC 서버로부터 받은 메시지는 TCP 소스 포트가 6667이다.

 

진행 중인 DDoS 공격 식별하기

이 스크립트는 다운로드를 탐지하고 HIVE 명령어를 인지하며 공격을 탐지한다. 현재 진행 중인 모든 DDoS를 식별할 수 있다.

 

 

무어가 미 국방부의 딜레마를 해결했던 방법


Nmap 툴

- 네트워크 서비스와 취약점을 스캐닝

- 공격자의 IP 주소와 실제 물리적 주소를 비교하면 스캔 가능

 

 

TTL 필드 이해하기

TTL 필드

- 8비트 => 0부터 255까지의 값을 가짐

- 컴퓨터가 TTL 필드를 설정 => 패킷이 목적지까지 갈 때까지 최대 몇 번의 홉을 할 수 있는지 설정

- 패킷이 거치는 모든 라우팅 장비에서 TTL 값을 1만큼 감소

 

Nmap 디코이 스캔 실행을 위해 -D 플래그를 설정, 그 뒤에 IP 주소를 입력한다.

192.168.1.7을 8.8.8.8이라는 디코이 주소로 그리고 하드 코딩된 TTL 13으로 스캐닝한다.

어쩐지 잘된다 했다.

 

 

Scapy로 TTL 필드 처리하기

소스 IP 주소와 전송 받은 패킷의 TTL을 출력하는 스크립트이다. TTL은 64-11=53이어야 한다. 리눅스/유닉스 계열의 시스템은 보통 TTL의 초기 값을 64로 설정하고 시작하지만 윈도우 기반의 시스템들은 128로 설정한다.

checkTTL() 함수: IP 소스 주소와 TTL을 입력 받아 유효하지 않은 TTL에 대한 메시지 출력

 

 

스톰의 패스트 플럭스와 컨피커의 도메인 플럭스


컨피커(Conficker)

- 가장 성공적인 컴퓨터 웜

- 원도우의 Service Message Block(SMB) 프로토콜에 있는 취약점을 공격함으로써 전파

- UTC의 시간과 날짜를 사용, 다른 도메인의 이름을 3시간 마다 생성

 

DNS에 숨겨있는 정보

whitehouse.com을 대상으로 도메인 이름 검색

 

Scapy로 DNS 트래픽 처리하기

DNSQR은 질문 이름(qname), 질문 종류(qtype), 질문 클래스(qclass) 등을 포함한다.

DNSRR에는 리소스 기록 이름(rrname), 종류(type), 리소스 기록 클래스(rclass), TTL이 포함되어 있다.

 

 

Scapy로 패스트 플럭스 트래픽 탐지하기

 

testFastFlux.py

haslayer() : 프로토콜 타입을 입력 받아 불리언을 반환

 

 

Scapy로 도메인 플럭스 트래픽 감지하기

컨피커에서 사용한 모든 도메인을 확인하고 싶으면 아래 사이트를 방문하면 된다.

http://www.cert.at/downloads/data/conficker_en.html 

불러오는 중입니다...

testDomainFlux.py

스크립트를 실행하면 컨피커가 실제로 도메인 플럭스에 사용했던 도메인 이름들을 여러 개 볼 수 있다.

 

 

 

케빈 미트닉 TCP 일련 번호 예측 공격


Scapy로 SYN 플러딩 공격하기

synFlood.py
결과

공격을 실행하면 TCP SYN을 보내 공격대상의 자원을 고갈시킨다. 공격대상의 큐는 고갈되고, 결국 공격대상은 TCP-RST 패킷을 보낼 수 있는 기능을 상실하게 된다.

 

 

TCP 일련번호 계산하기

calculateTSN.py

이 스크립트에서 유의할 점은 디폴트로 Scapy가 목적지 TCP 포트 80번을 사용한다는 점이다. 또한 공격대상에서는 반드시 연결을 스푸핑하려는 포트에서 서비스가 리스닝하고 있어야 한다.

 

 

TCP 연결 스푸핑하기

먼저 SYN 패킷을 생성한다. TCP 소스 포트는 513번, 목적지 포트는 514번이다. ACK 패킷을 생성하고 추가적인 필드에 계산한 일련번호를 추가하여 전송한다.

이제 앞의 스크립트를 모두 통합하고 연결을 스푸핑할 주소, 공격대상 서버, 최초 SYN 플러딩을 위한 스푸핑된 주소 등 커맨드라인에서 입력 받을 값을 처리할 부분을 더하면 완료된다.

 

 

SCAPY로 IDS 공격하기


idsFoil.py

분석가들로부터 공격을 숨기기 위해 분석가들을 압도하는 수준의 경고를 발생시키는 툴이다. 분석가는 이 툴을 사용하여 IDS가 정확하게 악성 트래픽을 식별하는지 검증할 수 있다.

결과

4개의 패킷 모두 IDS에 경고 메시지를 생성하게 했다.

'해커의 언어, 치명적 파이썬' 카테고리의 다른 글

6장 정보수집  (0) 2020.03.29
5장 무선 기기 해킹  (0) 2020.03.22
3장 포렌식 수사  (0) 2020.03.15
2장 침투 테스트  (0) 2020.03.13
1장 소개  (0) 2020.03.13