본문 바로가기

Security

1. 네트워크 트래픽 분석(PyGeoIP, Dpkt 패킷, 구글어스)

  1. IP 트래픽 목적지

    - 맥스마인드(MaxMind)에서 무료로 제공하는 데이터베이스를 통해 IP주소가 실제로 어느 물리적 장소에 위치하는         지 알 수 있음

    - GeoLiteCity 데이터베이스를 통해 IP 주소의 주, 우편번호, 국가이름, 위도 및 경도 같은 좌표 표시 가능

    - 현재 maxmind에서는 무료배포되지 않음(아래 사이트에서 파일 다운로드) - 해당 환경에서 직접다운로드

https://ko.osdn.net/projects/sfnet_lempelf/downloads/packages/GeoLiteCity.dat.gz/

 

Downloading File /packages/GeoLiteCity.dat.gz - LempElf - OSDN

Free download page for Project LempElf's GeoLiteCity.dat.gz.A tool to auto-compile & install Nginx+MySQL+PHP on Linux

ko.osdn.net

  - gunzip GeoIP.dat.gz

 

  1) PyGeoIP로 IP주소를 물리적 위치로 표시하기

     - pygeoip라이브러리 다운

     - GeoIP 클래스를 압축 해제한 데이터베이스가 있는 위치에서 실체화함.

     - IP주소를 입력 후 특정 기록이 있는 지 데이터 베이스를 쿼리함.

printGeo.py

 오류 : database(city)에 문제가 있는 것으로 보임..

--->

다시 처음부터.

  (1) 파일 다운로드

https://ko.osdn.net/projects/sfnet_lempelf/downloads/packages/GeoLiteCity.dat.gz/

 

Downloading File /packages/GeoLiteCity.dat.gz - LempElf - OSDN

Free download page for Project LempElf's GeoLiteCity.dat.gz.A tool to auto-compile & install Nginx+MySQL+PHP on Linux

ko.osdn.net

  (2) 압축 해제

  (3) geoip-database 설치 (이전에 이 문제로 오류가 났던 것으로 보임..)

 

  (4) 임의의 위치로 이동 

  (5) pygeoip 설치(이미 되어있음)

  (6) python printGeo.py 실행 - 지역이름에 문제가 있음.

  (7) 지역이름을 출력 안하도록 수정

  (8) 결과값

==> 결과 나온 것으로 일단 만족. 추후에 코드 수정하는 걸로,,

 

  2) Dpkt로 패킷 분석하기

   - Scapy와 비슷한 기능 제공

   - Scapy : 네트워크 패킷을 보내구, 훔치고 또는 패킷을 위조할 수 있는 파이썬 프로그램.

                > 네트워크를 점검하거나 스캔하거나 공격하도록 할 수 있음.

  - Dpkt : 캡쳐에 있는 각 패킷을 읽어와서 패킷의 프로토콜 층을 살펴볼 수 있도록 해줌.

  - pcap 파일 읽기

     > 파일을 실체화한후 pcap.reader클래스 객체를 생성한 후 이 객체를 printPcap() 함수에 전달함.

     > pcap 객체에는 배열이 있는데, 이 배열에는 [timestamp, packer]기록이 저장되어 있음.

     > 그 다음, 각 패킷을 이더넷과 ip 레이어로 분리함

     > socket 라이브러리를 사용하여 inet에 저장되어 있는 ip 주소를 단순한 문자열로 반환함.

 

  pcap 캡쳐하기

   - 와이어샤크 이용

eth0
패킷 수집중
종료버튼을 누르면 save할 수 있는 창이 나옴.

  - save창이 나오면 저장파일 형식, 이름, 위치를 지정 후 저장

 

printDirection.py

스크립트 실행 : 소스 IP와 목적지 IP가 화면에 출력됨.

 

 + ip주소에 대한 실제 물리적 위치 반환

   - 함수에서 예외가 발생할 경우 주소가 등록되어 있지 않다는 메시지를 반환.

   - 주소가 GeoLiteCity 데이터베이스에 없는 경우나 아니면 예제의 192.168.1.3과 같은 사설 ip가 처리 가능해짐.

서울 -> 등록되지않음 or 등록되지않음 -> 서울

 

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

  - 구글어스 : 가상 지구, 지도, 지리적 정보를 제공함

                  사용자가 KML 확장자로 텍스트파일을 만들면 다양한 표시를 구글 어스에 통합시킬 수 있음

  - retKML() :

     > IP주소를 입력 받아서 해당 위치에 대한 특정 KML구조를 반환함.

     > pygeoip를 이용하여 ip주소를 위도와 경도로 먼저 변환함

     > 해당 위치에 대한 KML을 만듦.

     > "location not found"같은 예외가 발생하면 빈 문자열 반환함

     >> KML헤더와 푸터를 추가할 수 있게 됨.

   - 각 패킷마다 소스IP와 목적지 IP를 위한 KML 표시를 생성하고 지도에 표시함 > 네트워크 트래픽을 시각화 가능

kml파일을 만드는 스크립트 : googleearthpcap.py

+ 앞서 만든 pcap 캡처파일 : geotest.pcap

>> kml 파일 출력함

>> 출력된 내용을 복사하여 kml 형식의 파일을 만들어 저장함.

 

구글어스

프로젝트 열기
바탕화면에 저장되어있는 kml파일 가져오기
kml파일 열기
아이피에 해당하는 위치정보 시각화

> kali에서 패킷 캡처한 파일을 바탕으로 아이피를 얻어서 kml파일 형식의 문서로 만든 후 구글어스에서 열었더니, 아이피에 해당하는 위치정보를 출력해줌.

 

 

'Security' 카테고리의 다른 글

무선 기기 해킹  (0) 2020.03.22
2. 네트워크 트래픽 분석  (0) 2020.03.21
포렌식 수사(메타데이터)  (0) 2020.03.13
컨피커, 노력하면 된다  (0) 2020.03.12
침투테스트(FTP와 웹을 이용한 대규모 공격)  (0) 2020.03.11