네트워크 패킷 분석 문제를 조금 더 풀어보고 싶어서
이곳저곳 찾다가 찾은 사이트 xcz.kr 이다.
재밌는 형식의 워게임들이 있다.

여기에 있는 문제들도 풀어야겠다 :)

다른 문제보다 17번문제 네트워크 관련을 풀어보았다.


(문제화면)



상황은
패스워드를 잃어버렸다
패스워드를 찾으라~ 라는 문제다
뭘까!
일단 다운로드!



(다운로드 클릭)



다운받아보니 패킷 덤프 파일이다!
(내가 찾던 문제!)
(하지만 생각보다 쉬워서... 쉬우니 이 문제는 직접 풀어보세요 :) )



(문제)



이 덤프 파일에 ID와 패스워드가 있다는 말이다.
로그인을 하거나 회원가입 어쨋든 인터넷을 이용했을 테니
http 통신을 먼저 살펴봐야한다.
패킷 필터링으로 http


(http 패킷 필터링)



패킷 내용들을 보니 join_ok와 통신한 내용들이 보인다.
join 회원가입을 한 흔적이므로 이 패킷을 살펴보았다.



(회원가입 패킷)



패킷 내용은 HTTP Stream으로 확인하였다.



(HTTP Stream 클릭)



내용을 살펴보니..!
아이디와 비밀번호, 이메일 정보가 들어있다.


(패킷 내용)



잘보니 우리가 원하는 id가 아니라는 것을 알 수 있다.
우리가 원하는 아이디는 zzang 어쩌구다.

회원가입 페이지 패킷을 살펴서 찾았다.



(정답 패킷내용)



우리가 원하는 패스워드를 찾았다.

:)



'WarGame > xcz.kr' 카테고리의 다른 글

xcz.kr - prob21(Web)  (0) 2017.02.24
xcz.kr - prob18(Web)  (0) 2017.02.22
xcz.kr - porb13 (network)  (0) 2017.02.03



오늘은 file Carving의 기초를 살짝 해볼 것이다.

* Network file Carving
 - 파일 복구
  : 깨진 파일을 복구하거나 삭제된 파일을 복구하는 것
 - 헥스 에디터 (일반적으로 우리가 다루는 문자는 텍스트 에디터이다.)
  : 16진수로 볼 수 있는 헥스 에디터이다.
  : 무료툴에서는 HxD가 좋다.

아래의 덤프 패킷에서 이미지 파일을 추출해내는 것이다.


(패킷상황)



먼저 이미지 파일을 요청한 패킷을 찾는다.



(이미지 파일 요청)



그에 해당하는 응답 패킷을 찾는다.


(응답 패킷)



이 패킷안에 이미지 파일이 들어있다.
Follow Stream해서 확인해보면



(패킷 내용)



이상한 글씨들로 써있다.
이유는 헥사 데이터들인데 이 값이 유니코드로 표현이 되다보니
정체불명의 글자들이 나오는 것이다.
여기서 헥사 데이터로 가져갈 것이다.


(저장)



(저장)



(저장 파일)



이 파일을 메모장에서 열어보면
아래와 같다.


(덤프 파일)



이 파일을 텍스트 에디터가 아닌
헥스 에디터로 열어볼 것이다.
헥스 에디터로 HxD를 쓸것이다.

HxD 검색으로 홈페이지에 들어가서 다운로드를 누른다.



(다운로드 클릭)



(한국어 버젼 클릭)



한국어 버젼을 받는다.

다운 받고 설치후 열어보면 아래와 같다.


(실행 화면)



여기에 아까 저장한 파일을 열어보겠다.


(img 파일 오픈)



헥스 데이터로 나온다.
하지만 GET부터 헤더내용 까지 들어있으므로
이미지 파일의 데이터만 뽑아 오겠다.

와이어샤크에서
이미지 파일을 헥스스트림으로 복사한다.


(헥스스트림 복사)




(이미지 파일)



이미지 파일을 열어보면 위와 같다.

맨 앞에 적혀있는 것이 파일 시그니쳐이다.
* 파일 시그니쳐( File Signiture )
 - 파일의 종류를 나타내는 고유값
 - 맨앞에 써있다.
 - 시그니쳐가 잘못되면 열리지 않는다.
 - 시그니쳐를 속일수는 없다.(반면 확장자는 속일 수 있다.)
 - 윈도우즈의 실행파일(exe) : MZ
 - 압축파일(zip) : PK
 - 이미지파일(jpg) : 0xFF 0xD8 0xFF 0xE0 (문자로 표현은 안된다.)
 - 텍스트파일(txt) : 시그니쳐가 없다. (한글,워드는 텍스트 파일이 아니다.)
   
 -> 버전에 따라 조금씩 다를 수 있다.

실행파일을 헥스에디터로 열어보겠다.



(실행파일 MZ)






여기서 아까 열었던 이미지 파일을 jpg로 저장해준다.



(저장)



(이미지파일)



이미지 파일이 생겼다.
열어보면


(이미지)



이미지가 나오는 것을 확인할 수 있다.

또 다른 방법이 있다.
파일에서 Export Object에서 HTTP를 클릭한다.



(Export Object에서 HTTP를 클릭)



(이미지파일 저장)



여기에는 주고받은 HTTP로 주고받은 내용이 나오는데
이미지를 클릭하고 저장을 누른다.


(이미지 저장)



(이미지 파일)



그렇게 되면 이미지를 와이어샤크 패킷에서 뽑아 볼 수 있다.

-----------------------------------------------------------------------------------------------




패킷분석

문제 9
악성코드에 감염된 페이지를 찾고
무엇을 하려는지 찾아내기.


(패킷 상황)



(http 패킷 필터링)



http 패킷중 이상한 패킷이 있다.
데이터 내용을 보면



(스크립트)



이상한 스크립트를 숨겨 놓은 것을 찾을 수 있다.

이 스크립트를 메모장으로 복사해서 보니


(스크립트)



알아보기 힘든 ... 코드다.. 바로 이것이 난독화!
-> 난독화기법
: 읽기 어렵게 만든것이다. 변수 이름도 이상한걸로 해놓은 것이다.
: 분석을 어렵게 만드는 것이다.

난독화코드로 악성코드를 심어놓은 해커가 이 코드가 무엇이 동작하는지 모르도록
의도한 것이다.

-----------------------------------------------------------------------------------------------
실습
attack.pcap
1. 공격 유형을 파악하시오.

2. 공격자와 피해자는 누구인가?


(attack.pcap)



Conversation을 들어가보니
공격 유형을 확인할 수 있었다.


(포트 스캔)



포트스캔이다!

그런데 좀 이상한 부분이 있다.
바로 이상한 HTTP요청들이 있었는데


(이상한 요청)




(의심스러운 요청)



이러한 요청들은 acunetix라는 취약점분석 프로그램에 의한 것이다.
그 증거는 맨 위에 acunetix라고 써있다.
즉 아래의 공격 뿐 아니라 포트 스캔도 이 프로그램으로 이루어진
자동화된 공격이라고 생각할 수 있다.

1. 공격 유형을 파악하시오.
- Port Scan
2. 공격자와 피해자는 누구인가?
- 공격자 : 192.168.0.112
- 피해자 : 65.61.137.117
-> 자동화된 점검툴(취약점점검툴) 이용




여러가지 상황에서
와이어샤크로 패킷들을 분석하고
정보를 분석해보겠다.

[ case1 ]
두 사람(베스와 베리)의 컴퓨터를 바꾸었다.
한 사람은 인터넷이 잘됬고 한 사람은 인터넷이 안된다.
그래서 네트워크 관리자에게 전화했다.
" 그러면 패킷을 덤프해서 보내주세요 "
하나는 인터넷이 잘되는 패킷덤프파일이고
하나는 인터넷이 안되는 패킷덤프파일이다.
왜 안될까?



(베스의 패킷)




(베리의 패킷)



분석
베스가 안된다.
그 이유는
1. 게이트웨이의 주소.
ARP 요청을 응답받지 못했다.
게이트웨이 주소가 잘못되었다고 추측해볼 수 있다.
-> 정확하게 얘기할 수는 없는 것이다.
    다만 추정을 하는 것이다.

[ case2 ]
- 악의적인 트래픽만을 수집해놓은 샘플이다.
공격유형과 공격자, 피해자가 누구인지 알아내자.


(case 2 패킷 화면)



SYN 패킷이 잔뜩 있는 걸로 봐서
SYN Flooding으로 예상된다.
하지만 이렇게 단정지어서는 안된다.
그렇게 결론 내리기 까지는 정확한 결과를 찾아야한다.



(static - 맨위 메뉴 선택)



(통계수치)



통계수치를 볼 수 있다.
수집된 시간은 1초동안 수집된 것이고,
1초에 19946개의 패킷이 드어온 것을 확인 할 수 있다.
Dos 공격을 의심할 만한 양의 패킷이다.

하지만 이 기준도 모호하다. 서버입장에서는
1초에 더 많은 패킷이 들어오기 때문이다.
static 메뉴에서 conversation으로 어떤 호스트와의 통신을 했는지 확인한다.


(Conversation 선택)



(Conversation 화면)



확인해보면 여러 IP에서 패킷이 들어오고 있는 것을 확인 할 수 있다.
1초에 다량의 SYN 패킷으로 SYN Flooding이라고 추정하였다.

정리하면
1. 공격 유형은 무엇인가?? 
(SYN Flooding)
-> SYN이 많다고 단순히 SYN Flooding으로 생각하면안된다.
근거를 찾아야한다.
static으로 보면 1초동안에 수집된것이라는 것을 알 수 있다.
- 1초동안 약 2만여개의 SYN 패킷이 들어왔다.
- 1초 동안에 수집된 패킷의 양이 평소보다 많이 발생했으므로 DDos 추정
-> TCP SYN Flooding
-> 여기서는 평균을 모르므로 추정하는 것이다.

2. 공격자와 피해자의 ip는 몇번인가?
- 피해자 (192.168.1.150, http서버)
- 공격자 (ip 스푸핑중이다.)

[ case3 ]
 - 악의적인 트래픽만을 수집해 높은 샘플
 - 다른 일반적인 트래픽들은 포함되어 있지 않다.
- 공격유형과 공격자, 피해자를 밝히자.



(case3 상황)



Conversation을 확인해보니
도착지 포트를 보니 포트스캔을 한 흔적이 보인다.


(Conversation 화면)



포트 스캔 중 어떤 스캔인지 확인해보기 위하여
패킷을 확인해보겠다.



(패킷 선택 확인)




(패킷 확인)



패킷을 확인하니 세션을 연결하지 않고
SYN, ACK가 오면 RST를 보내 연결을 맺지 않는 것을 확인 할 수 있었다.

이로써 공격자는 스텔스 스캔 중인 것이다.
TCP Half Scan이다.

연결되어있는 포트를 확인해보면 패킷이 3개인 것들을 보면 된다.



(연결된 포트)



정리하면
1. 공격 유형은 무엇인가?
- TCP Half Scan
2. 공격자와 피해자의 IP는 무엇인가?
 - 공격자 : 192.168.1.100
 - 피해자 : 192.168.1.101
3. 만약 공격이 성공했다면 공격자가 알아낸 정보는 무엇이 있었는지?
 - 열려있는 포트들에 대한 목록
135
80
8080
445
8888
1025
139
3306 포트가 열려있다.
설명
- 4초동안 1만여개의 포트를 확인하였으므로 자동화된 툴을 사용했을 것이다.
-> Conversations 결과를 보면 포트를 스캔했다는 사실을 알 수 있다.


[ case4 ]
 - 정상적인 트래픽과 비정상적 트래픽이 함께 존재하는 샘플이다.
 - 정상적인 트래픽과 같이 있는 상태에서 분석을 진행하기 때문에
    정상적인 트래픽과 비정상적인 트래픽을 구분할 수 있어야 한다.

그렇다면 똑같이 공격유형과 공격자, 피해자를 알아보자.


(case4 상황)



먼저 패킷의 흐름을 파악하기 위해 분석의 맨 아래 전문가 정보를 선택한다.



(전문가 정보 선택)



(정보 화면)



화면을 보면 어떤 통신을 했는지
한 눈에 정리해서 볼 수 있다.

여기서 더 내려가보니..



(의심 패킷들)



의심되는 패킷들이 보인다.
다른 통신없이 SYN패킷만 보낸 흔적이다. 그것도 포트번호만 바꾸어가면서

Conversation으로 확인해보았다.



(Conversation 확인)



Conversation으로 확인해보니
포트스캔의 흔적을 찾을 수 있었다.

정리하면
1. 공격 유형은?
 -> 포트스캔
2. 공격자와 피해자의 ip는?
- 공격자 : 192.168.1.100
- 피해자 : 124.137.25.23
3. 공격이 성공했다면 공격자가 알아낸 정보는 무엇인지?
- 25번이 열려있다는 사실.



DNS의 동작 까지 확인해보았고
오늘은
DNS 동작을 이루는 패킷이 어떻게 이루어져 있는지 분석해보겠다.

호스트의 DNS IP주소를 확인해보겠다.




(DNS 서버 주소)



164.124.101.2 로 되어있다. 아래 IP주소도 맞다.
DNS 캐시 서버이다.

이제 패킷을 덤프해서 확인해보겠다.
와이어샤크 실행
간단하게 캡쳐 필터링 룰을 설정하였다.




(캡쳐 필터링 룰 설정)



멀티캐스트를 제거하였다.
멀티캐스트와 브로드캐스트를 제거해야하는데 지금보니
위에 오타가 있었다. :)

간단한 룰을 설정해주고 naver.com에 접속하였다.
(도메인 네임을 가지고)




(naver.com 입력)



그리고 디스플레이 필터 룰을 dns 로 설정하여
dns 패킷만 확인하였다.
아래 화면에
같은 Trx Id 를 가진 패킷들을 빨간색 표시해두었다.




(DNS 패킷)



디스플레이 필터링 룰을 dns.id == 0x0e68 로 설정하여
해당 아이디의 패킷만 필터링 하였다. (보기 좋게)



(필터링 룰 적용)



이제 query (Qeustion) 패킷부터 살펴보겠다.




(Trx ID)



DNS query 패킷의 첫번째 요소는
Transaction ID 이다.
UDP 통신이기 때문에 패킷을 구별할 수 없다. 그렇기 때문에 이 ID가 존재하고
이 ID로 해당 질문에 대한 답변을 구분 한다.




(Flag)



두번 째는 Flag이다.
질문, 응답 등의 패킷 타입을 결정한다.




(Question)



Question 필드에는 물어보는 도메인 네임의 수이다.
보통 한개가 생기면 바로 물어보기 때문에
한개 이상의 패킷을 보기는 힘들다.




(나머지 필드)



나머지로 Answer , Authority, Addional 이 있다.
Answer는 질문에 대한 답이고
Authority는 그 답에대한 근거(?) 출처(?) 정도이다.
Additional은 추가적인 내용이 붙는다.

정리하자면
DNS Header
 1. transaction id (2바이트)
 2. Flag (2바이트)
 3. qeustion(2바이트)
  - 질의 갯수
 4. answer(2바이트)
 5. authority(2바이트)
 6. additional(2바이트)

이렇게 구성되어있다.
도메인 네임의 전송을 살펴보겠다.



(www.naver.com 이 담겨져 있는 모습)



살펴보면
먼저 문자의 수가 나온다. 03, 그 뒤로 www (77 77 77) 이 나온다.
그리고 다시 문자의 수 05, 그리고 naver 5글자가 나오고
마지막으로 03 , com 3글자가 나온다.




(응답 패킷)



응답 패킷을 보면
DNS 헤더의 똑같은 양식에
응답부분이 채워져서 전송되었음을 확인 할 수 있다.

그러면 위에서 작성했던 도메인 네임을 여러번 쓸까?

그렇지 않다.
패킷을 잘 보면 c0 이 보이는데
c0은 포인터라는 뜻이다.
c0 뒤에 2b는 43이라는 숫자로 DNS 헤더의 43번째에 있는 주소를 나타내는 뜻이다.



(포인터 표시)



지금까지 DNS 패킷을 분석해보았다.

이제 DNS 패킷을 조작하여 할 수 있는 공격기법을 살펴보겠다.

* DNS Spoofing
- DNS를 속이는 공격 기법
 - trx id와 포트번호를 맞춰야한다.
 - Birthday Attack(추측성 공격, trx id를 추측하는 공격기법)
 - 그래서 보통 ARP Spoofing과 함께 공격을한다. (클라이언트가 대상일때)
 - 스푸핑 환경을 만든 후에 공격을 한다.
 - 공격자와 피해자가 같은 환경에 있어야한다.


DNS Spoofing을 해볼 것이다.

우리가 작성해야할 프로그램
1. ARP spoofing (pcap library를 이용)
 1) arp cache poisoning
 * ARP request 메세지를 작성하여 스푸핑
 * 브로드 캐스팅은 사용하지 않는다
 * 유니 캐스팅을 할 수 있도록 작성
target : 192.168.3.99
 - mac : 90-9f-33-ec-cc-37
attacker : 192.168.3.100
 - mac : 90-9F-33-EC-CB-0B
게이트웨이
 00-10-f3-4e-58-40

2. DNS spoofing (pcap library를 이용)
 
0) packet forwarding
  - 자기 패킷이 아니라면 원래 목적지로 포워딩
 1) DNS Query 패킷을 모니터링
 2) 타겟 도메인(www.daum.net) 모니터링
 3) 속이려고 하는 도메인에 대한 DNS 쿼리
     패킷이 검출되면 가짜 응답을 만들어서 전송해준다.
  - 출발지 포트번호와 TRX id 정보를 알아야 한다.

먼저 ARP Spoofing도구를 만들것이다.
(이건 우리가 전에 작성했던 코드로 바로 여기서 사용하겠다.)




(ARP Spoofing 코드)



이 프로그램으로 ARP 스푸핑이 된 결과를 확인 할 수 있었다.

두번째로
DNS Spoofing을 해주는 프로그램을 만들 것이다.
우리가 ARP 스푸핑을 해서 스니핑을 할 때 포워딩 기능이 없었다.
그래서 DNS Spoofing 코드에 포워딩 기능을 추가할 것이다.

먼저 포워딩 기능 부터 구현해보겠다.

arp_cache_table 변수는
subprocess를 이용해 arp table을 받아 가지고 있는 arp table이다.
IPv4 패킷만 걸러내보겠다.




(IPv4 필터링)




(결과 화면)



끝에 2048이 16진수로 0x800이다. IPv4만 걸러낼 수 있다.

여기서 IP 주소를 보고 구별 할 것이다.

나에게 오는 것이 아닌것 그리고 브로드캐스팅 되는 것 멀티캐스팅되는것을 제외하고는
포워딩을 해줘야할 필요가 있다.
그 패킷들만 필터링 해보겠다.



(포워딩할 패킷 필터링)



자 여기까지 포워딩이 되야할 필터링을 마쳤다.
이제 ARP 스푸핑과 지금까지 작성됬던 프로그램을 동작시켜서
포워딩 해야할 패킷들이 잘 필터링 되는지 확인해 보겠다.
두개 같이 동작 시킨후
피해자가 8.8.8.8 외부 IP로 핑 메세지를 보냈다.



(결과화면)




결과 화면을 보면
99(피해자)가 보낸 핑 메세지들이 필터링 되서 내 화면에 출력되고 잇는 것을 확인할 수 있다.

이제 여기서 포워딩을 추가해주고
DNS Spoofing 프로그램을 만들어 보겠다.



오늘은 와이어샤크에 대해서 알아보겠다.

아래는 와이어샤크 첫 화면이다.

여기서 인터페이스를 선택할 수 있다.
선택 후 그 인터페이스로 들어오는 패킷을 보여준다.




(와이어샤크 첫 화면)



와이어 샤크 파일을 저장해서
원하는 곳에서 열어서 분석을 할 수 있다. -> 수집된 위치에서만 분석할 수 있는 것이 아니다.



(저장화면)




(저장 파일)



이 파일을 열면 와이어샤크에서 받은 패킷들의 내용을 그대로 볼 수 있다.
pcapng 확장자로 설정되어있다.

레이아웃을 보기 편하게 바꾸어 볼 것이다.

편집에 들어가서




(편집 선택)



Preferences 에 들어가면 아래와 같은 화면이 나온다.

Layout 선택 하는 화면이다.



(Layout 설정)



난 2번째것으로 설정해주었다.

* 와이어 샤크가 제공하는 필터링 기능
1. 캡쳐 필터
 - 패킷을 캡쳐할 때 적용되는 룰
 - 복잡한 룰을 적용할 수 없다. (적용하지 않는게 좋다.)
 -> 캡쳐할 때 부하가 걸린다.
 - 캡쳐필터할 때는 단순한 룰을 적용시킨다.
 -> 수집 단계에서 필터링이 적용된다.
 - 캡쳐 필터는 신중하게 작성할 필요가 있다.
 - 아이에 수집이 안되기 때문에 최소한으로 적용시키는 것이 좋다.

2. 디스플레이 필터
 - 패킷을 캡쳐한 이후에 적용하는 룰
 - 성능과 관계없이 룰을 적용
 - 아주 복잡한 룰도 적용이 가능하다.

먼저 패킷 필터부터 살펴보겠다.
패킷필터는 캡쳐 위에 옵션에 들어가서 설정해줄 수 있다.




(패킷 필터 화면)



빨간색 부분에 필터링 룰을 입력하면 된다.

혹은 룰을 세팅해두어서 나중에 필요할 때 써도 된다.




(필터링 룰 설정)



아래는 캡쳐 필터를 직접 입력해주는 모습이다.



(필터링 룰 직접 입력)



디스플레이 필터는
캡쳐가 이미 된 후에 화면에서 필터링하는 것이다.

화면에서 아래에 표시된 부분에 디스플레이  필터링 룰을 입력하는 곳이다.



(IP 주소 필터)



IP 주소로 필터링을 하는 모습이다.

이 외에 다양한 필터링 룰이 있는데
화면 오른쪽에 Expression 버튼을 누르면
다양한 필터링 룰이 나온다.
아래는 필터링 룰 화면이다.


(필터링 룰 화면)




처음에는 여기서
찾아가면서 입력하면 된다.


이제 와이어샤크의 간단한 입문을 마무리하고 응용프로토콜을 살펴보겠다.

1. UDP 통신을 하는 응용 프로토콜
 - DHCP ( Dynamic Host Configuration Protocol )
 - DNS ( Domain Name System )
 - TFTP

2. TCP 통신을 하는 응용 프로토콜
 - FTP (File Transfer Protocol)
 - HTTP ( HyperText Transfer Protocol ) : WEB
 - SMTP ( Simple Mail Transfer Protocol ) : mail전송 프로토콜

응용프로토콜의 종류는 위와 같다.

제일 먼저 살펴볼 것은 DHCP 이다.

* DHCP ( Dynamic Host Configuration Protocol )
 - 동적으로 자동으로 IP 할당을 하게 해주는 것.
 - 네트워크를 알지 못해도 통신이 가능하다.
 
 - 가상머신(리눅스)을 통해서 DHCP 서버를 구축해볼 것이다.
 - 서버를 구축한다 -> 서비스를 제공하겠다.

* 리눅스 운영체제가 서비스를 제공하지 않는다.
-> 어떤 운영체제만으로 특정 서비스를 제공할 수 없다.
* 서버를 구축 -> 서비스를 제공한다. -> 서비스를 제공할 수 있는 응용프로그램(데몬)을 설치 후 실행한다.
( 운영체제가 서비스를 제공하는 것이 아니라 운영체제 위의 프로그램이 서비스를 제공하는 것이다.)

리눅스에서 DHCP 설치 하는 과정이다.



(search 해준다.)


먼저 설치할 파일을 찾아준다.
명령어 yum search dhcp



(리스트들이 나온다.)



우리는 여기서 dhcp.x86_64 를 설치해 줄것이다.




(설치 화면)



yum install dhcp.x86_64
를 입력해주어 설치를 한다.



(설치가 완료된 모습)



DHCP가 설치된 모습을 확인 할 수 있다.


어플리케이션 프로토콜에 관해 알아볼 것인데
어플리케이션 프로토콜 중에는
FTP, DHCP, DNS, HTTP ... 등이 있다.

이 프로토콜을 확인해보기 위해 직접 서버를 구축해야하는데
서버 구축까지는 힘드므로
있는 프로그램을 활용하기 위해 리눅스를 다룰것이다.
리눅스에서 서버 프로그램을 돌릴 것이다.

그러기 위해 VM 을 설치하고 VM 상에서 리눅스를 설치해야한다.

아래까지는 VM을 설치 마무리한 상황이고 설정 화면이다.

먼저 VM의 네트워크 인터페이스 타입에는 3가지가 있다.
1. NAT -> 호스트가 라우터 역할로 NAT을 구성하는 것이다. 
2. Host Only -> 호스트끼리만 통신이 되는 것이다.
3.Bridge (L2) -> 호스트 운영체제랑 네트워크 인터페이스를 같이 사용한다.

여기서 우리는 Bridge로 설정할 것이다.




(브릿지 타입으로 설정)



그 후 리눅스를 설치한다.

아래는 설치후 로그인 화면이다.




(로그인 화면)





(ifconifg 화면)



윈도우에서는 ipconifg였지만 리눅스에서는 ifconfig로 IP를 확인 할 수 있다.
확인해보니 루프백 인터페이스만 설정되어있고
다른 인터페이스는 없는 상태였다.

DHCP 서비스가 닫혀있었기 때문이었다.
다음은 DHCP 설정을 하는 과정이다.
/etc/sysconfig/network-scripts/ 로 들어가서 ifcfg-eth0 파일을 수정해주어야한다.




(/etc/sysconfig/network-scripts/ 폴더 내용)



vi 편집기를 이용해 eth0 파일을 연다.

그 후 ONBOOT 옆에 no라고 되있는 것을 yes로 바꾸어준다.




(yes로 바꾸어준 모습)



설정후 reboot 해준다.

다시 켜서 확인해보면
ifconfig에서 eth0 인터페이스가 설정되어있는 것을 확인할 수 있다.




(인터페이스가 설정된 모습)



설정이 된 모습을 확인했고
실제로 잘 통신이 되는지 체크했다.
1. 게이트웨이와의 통신 체크
2. 외부 IP주소와 통신 체크
3. DNS lookup 가능 체크



(통신이 잘 되는 모습)



통신이 잘 되는 것을 확인 할 수 있었다.

마지막으로 리눅스에서 네트워크 실습을 할 것이므로
방화벽을 꺼주어야한다. (우리는 해킹 실습을 할 것 이기 때문에.)

* 리눅스 보안설정 해지
 
 방화벽 : iptables
 SELinux : Security Enhanced Linux -> 현재 리눅스보안의 핵심

먼저 iptables를 삭제해 줄것이고 SELinux를 설정을 바꾸어 줄것이다.



(iptables)



/etc/sysconfig 폴더에 들어가서 iptables를 삭제해준다.




(삭제하는 모습)



명령어는
rm -rf iptables 이다.

또 vi 편집기를 이용해 selinux를 열어서 diabled로 바꾸어준다. (아래처럼)




(설정화면)



그러면 이제 설정은 끝이다. reboot하고 설정을 확인해본다.
getenforce를 입력했을 때 Disabled가 나오고
iptalbes -L 을 입력했을 때 아무것도 안나오면 설정이 완성 된 것이다.



(설정이 잘 된 모습)



리눅스 설정은 여기 까지 끝이다.

이제 어플리케이션 프로토콜을 분석하기위해
와이어샤크 프로그램을 사용할 것이다.

와이어샤크 프로그램 실행 첫 화면이다.



(와이어 샤크 첫 화면)



캡쳐를 누르면 여러 패킷이 담긴다.
지금까지 했던 Packetdump와 같다.



(패킷이 덤프된 모습)



오늘은 와이어샤크를 이용한 간단한 트러블슈팅 방법을 알아볼 것이다.

와이어샤크로 패킷을 덤프 받고 수상한 패킷을 찾아낸다.
그 패킷의 포트 번호를 확인한다. 그 후
cmd 명령창에서 netstat를 이용하는데
-o 를 이용하면 프로세스 ID를 표시할 수 있다.



(netstat 옵션)




(PID 출력 화면)



이 아이디로 찾는 것이다.
Crl + Alt + Del 을 누르면 작업관리자가 나오는데

보기 를 누르고 열선택에 들어가서 설정해줘야한다.



(작업관리자 화면)




(열선택 창화면)



여기서 PID 를 체크해주고 확인을 누른다.



(PID 표시 화면)



그렇게 되면 PID도 화면에 같이 볼 수 있다.

아래 화면에서 보듯 1184번이 궁금했는데 위에 작업관리자 PID 118번의 프로세스를 확인하니
vm웨어라고 적혀있다.
여기서 그 패킷은 vm 웨어의 것이구나 하고 알 수 있다.



(1184번 PID)



이런 방식으로
수상하거나 문제가 되는 패킷의 출처를 찾아낼 수 있고
이로 악성코드 실행 근원지를 찾을 수 있고
트러블슈팅을 할 수 있다.

앞으로 리눅스 서버와 와이어샤크를 이용해
어플리케이션 프로토콜을 확인해보고 취약점을 분석해 볼 것이다.


칼리 리눅스를 이용해 ARP Spoofing과 Sniffing 공격을 해보겠다.
물론,
실제 서버, 실 사용자에게 공격을 하는 것은 불법이다.
즉, 실제로 사용한다면 본인이 그에 대한 책임을 져야한다.

공격할 환경을 구축해야한다.
VM을 이용해
칼리리눅스(서버) - IP 주소 100번
칼리리눅스(공격자) - IP 주소 120번
윈도우(피해자) - IP주소 4번

상황은 피해자가 서버에 접속을 하는 상황이다. (TELNET 접속)
공격자는 이 때 서버의 계정과 비밀번호를 얻더내는 것이 목표이다.

먼저
피해자가 서버와 통신을 할 것이고 이 때 TELNET에 계정과 비밀번호를 전송할 것이다.

TELNET은 통신이 암호화되어있지 않기 때문에
패킷의 내용을 가져올 수 있다면 즉 스니핑을 할 수 있다면
바로 게임 끝이다.!

이제 관건은 어떻게 스니핑을 할 것인지가 관건이다.
스니핑을 하기 위해
ARP 스푸핑을 이용할 것이다.
네트워크 해킹의 일종으로 ARP Poisoning이라고도 한다.

그래서 피해자와 서버 사이에서 중간자에 들어갈 것이고
이 상황에서 스니핑을 할것이다.
그 후 계정 탈취

계획을 정리하겠다.

1. ARP 스푸핑
2. 스니핑
3. 끝

칼리리눅스의 arpspoofing 툴을 이용해 먼저 스푸핑을 시작한다.




(arpspoofing 명령)





(arp reply 패킷이 전송되는 모습)




피해자의 입장에서 보면


(공격 받기 전 ARP 테이블)





(스푸핑 당한 상황)



이 상황에서는 피해자의 패킷들이 전부 나(공격자)에게 전송되므로
피해자는 현재 인터넷 통신이 되지 않는다.





(인터넷이 끊긴 상황)



이대로 놔두면 피해자는 이상하게 여길 것이고 공격받고 있다는 것을
눈치 챌것이다.

가로챈 패킷을 다시 정상상태로 포워딩을 시켜줘야
피해자가 인터넷 통신이 되고 공격받는 사실을 눈치 채지 못할 것이다.
또 다시 포워딩을 해주면서 나는 피해자와 서버 사이에 들어가게 되는 것이다.

피해자 < - > 나  < - > 서버





(포워딩 해주는 모습)



자 이제 중간까지 들어갔다.

패킷 스니핑을 하면 된다.

우리는 와이어샤크를 이용할 것이다.
와이어 샤크를 이용해 패킷을 확인해 볼 것이다.




(와이어샤크를 캡쳐 중인 모습)



자 이제 와이어 샤크로 감지하고 있고
피해자가 접속하길 기다리면된다.

피해자가 접속을 한다.




(텔넷 서버에 접속하는 모습(피해자 화면))





(접속한 상황(피해자 화면))



이 때 바로
패킷을 분석해보니
TELNET프로토콜을 확인할 수 있었다.
전체적인 내용을 확인하기 위해 Follow TCP Stream을 클릭해준다.




(Follow TCP Stream)





(에러 화면)



에러 화면이다...

이 문제로 실제
밤을 새웠다..
구글도 뒤져보고 실제로 이 문제로 최근 바로 16년 12월에 버그로 보고가 된 부분이었다.
그래서 와이어샤크는 2.2.2 버젼에 이 버그를 패치해서 올려놨는데

확인해보니 내 버젼은 2.2.0 ...
업그레이드 해주었다.
그 후 잘되는 모습이다.





(계정, 패스워드 탈취)



이렇게 TELNET 계정과 패스워드를 획득할 수 있었다.
공격 성공.

!!!



* 트래픽 분석 툴로 유명한게 WireShark이다.

이제 패킷덤프 코드 작성한것 말고 WireShark를 이용해서 패킷을 확인해보겠다.

(와이어샤크 홈페이지)



와이어샤크는 홈페이지에서 무료로 다운받을 수 있다.
자기 집 OS에 맞추어 설치하면 된다.



(첫 화면)



첫 화면에서 인터페이스를 설정 할 수 있다. 원하는 랜카드를 설정하고
캡쳐 시작을 누르면



(캡쳐 화면)



위와 같이 패킷들을 확인 할 수 있다.

우리가 패킷덤프 프로그램으로 보던 것과 비스하게 나온다.

우리가 저번에 만들었던 ICMP 패킷 만들어 전송하는 코드로
ICMP패킷을 하나 보내서 이 패킷을 확인해 보겠다.




(우리가 보낸 ICMP 패킷)



우리가 보낸 패킷에는 Checksum을 그냥 0으로 지정해서 보냈다.

그러니 응답이 없었다.
위에서 보는 것 처럼
만약 입력값이 잘못되면
패킷 내용에서 와이어샤크에서 노란색으로 표시된다.

IP 헤더는 체크섬을 0으로 하곤했다.
UDP 또한 checksum을 넣을 필요가 없다.
하지만
ICMP는 checksum을 계산해야한다.

* Checksum 구하는 법

(16진수 기준이다.)
1) 두 자리씩 더해준다.
ex) 08 00 + 00 00 + 11 11 + 00 01 + ....
    = 08 00 + 00 00 + 11 11 + 00 01 + ....
    = 19 12 + (41 41 *10)
    = 19 12 + 41 41 0
    = 4 2D 22 

2. 올림수가 발생하면 올림수를 더해준다. 위의 경우에서는
 = 2D 22 + 4
 = 2D 26

3. 그 결과에 1의보수를 해준다.(반전)
 -> 2진수로 바꾸어준다.
 - 2D 26  => 10110100100110
 -> 1의보수 => 01001011011001  => 12D9 가 나온다.16비트가 나와야하는데 14비트다
      앞에 00이 빠져있던것이다. 그렇기 때문에 00이 존재한다.
바로 이게 체크섬 값이다.
실제 체크섬 값 1110110100100110
앞에 11을 빼면 일치하다.  ( 자리수 16개에 맞추어 보수를 취해줘야한다. 그렇게 되면 11이 들어간다.)

수신측에서 체크하는 법
1. 같은방식으로 전부다 더해준다.
 = 08 00 + D2 D9 + 11 11 + 00 01 + (41 41 * 10)
 = EB EB + 41 41 0
 = 4 FF FB
 = (올림수 발생)
 = FF FB + 4
 = FF FF
FF FF 값이 나오면 올바른 값으로 인식한다.

이제 Checksum을 계산하는 법을 알았으니 프로그램 함수로 만들어 볼것이다.




(함수 코드)



위에서 비트연산을 사용했다.

* 만약 2개씩 안맞으면 뒤에 00 을 채워서 2개씩 맞춰서 더해준다.




(두번 pack해준 모습)



(정상적으로 ICMP 패킷이 전송되고 응답을 받은 모습)



IP 헤더를 이용한 공격기법
 - 테스트 가능한 공격기법이 현재는 거의 막혀있는 상태이다.
Dos( Denial Of Service )
 - 서비스 거부 공격
1) ICMP 헤더를 이용한 Dos
 - Ping of Death : 대량의 ICMP Echo Request 패킷을 발생시켜 타켓 시스템에 과부하를 일으키는 방법
 - 그래서 요즘에는 아이에 ICMP를 차단시킨다. (네이버도 그렇다.)
2) ICMP를 이용한 스니핑
 - ICMP redirect를 이용한다.
3) IP 헤더를 이용한 공격 기법
 - TearDrop : fragment offset필드의 값을 조작하는 방법(아주작은 값 혹은 큰값)
  -> 현재 패치가 다 되서 가능하진 않다.
 - Land Attack : 출발지 ip와 도착지 ip를 동일하게 조작하는 방법
  -> 이것 또한 패치가 다 되어있다.
 - Smurf Attack : 출발지 ip를 타켓으로 조작해서 브로드캐스팅한다.

Dos 는 많은 패킷을 보낼 수 있으면 더 효과적이다.
그래서 DDos가 나왔다.
Distribute (분산) Dos -> 엄청난 수의 컴퓨터가 공격하는 것이다.
        -> 공격자가 쉽게 노출될 수 있다.
DRDos -> SMURF Attack 공격과 비슷하다.
       -> DRDos는 잘 알려진 서버들이 공격에 이용된다.
      -> 공격자가 뒤로 숨을 수 있다. (공격자를 찾기 힘들다.)



+ Recent posts