본문 바로가기

Rookies 9기/시스템 네트워크보안

시스템 / 네트워크 보안 2일차

728x90

복습

• 인터넷의 시작

- 통신 장치들이 호환이 안됨(네트워크 장비를 만드는 회사들이 독자적 기술)

- APRA에서 장비 종류가 달라도 통신이 가능하도록 프로토콜 개발(ARPAnet : 빈트서프, 로버트 칸)

- Milnet와 TCP/IP로 나누어서 TCP/IP는 민간에 개방(상업용) ---> 무료로 사용(ISP들이 선호)

- IP : IP주소를 분배하고 IP끼리 통신할 수 있도록 하는 프로토콜

- TCP,UDP : Port 번호를 사용해서 Application을 구분하는 식별자 역할을 지원

 

•Port 번호

- system port : 0~ 1023 (Well Known Port : 용도가 미리 지정되어 있다는 의미) -----> sever용 포트(http, SSH, Telnet, FTP, SMTP 등)

- Register port : 1024 ~ 49151 -----> (특정 회사에서 개발한) Application (MySQL, Battlenet, KakaoTalk, 게임 등등)

- Dynamic port : 49152~65535 -----> 자유롭게 사용 가능, 주로 Client가 사용(Chrome, Internet Explorer, Edge, Firefox 등)

ex) Web Browser가 50000번을 사용해서 Web Server의 433포트에 접속하려고 한다.

TCP Header의 Source Port는 50000번, Destination Port는 433이 들어간다.

 

오늘 배운 내용

• TCP의 특징(동일경로, 순차전송)

- Connection Oriented : 데이터를 송수신하기 전에 연결을 확보  ----> 동일경로 전송 ----> 전화와 비슷

- 순차전송 : 순서대로 도착해야한다. 중간에 못받은 것이 있으면 그 뒤는 다 버린다. 재전송 요청

- 수신측에서 받을 수 있는 크기를 확인하는 기능  ---> Windows Size

 

• TCP 헤더

- Sequence Number : TCP Segment가 분할된 경우, 순서 번호가 들어간다.

- Acknowledgement Number : 응답번호, 다음에 받을 Sequence 번호를 표시

Ack Number가 1001이라면, 주는 쪽에서는 1000번까지 잘 받았구나 하고 판단한다.

----> 순차 전송이 가능해진다.

- TCP Flag : TCP의 속성을 의미 (6bit) => 1bit씩 할당, 순서는 UAPRSF ⭐

URG : Urgent(긴급)

ACK : Acknowledge (응답)

PSH : Push (상위 계층으로 보내서 처리)

RST : Reset (연결해제) -> 그냥 끊는다.

SYN : Syncronization (동기화 요청, 연결요청) --> 데이터를 보내도 될까요? ACK가 와야지 보낼수 있다.

FIN : Finish (종료요청) -> 정상으로 끊는다.

ex) 000010 ---> SYN (연결 요청), 010010 ----> ACK/SYN, 000001 ----> FIN (연결종료요청)

 

• UDP 헤더

- 순서 체크, 경로 확보 안한다.

- 상대방이 얼마나 받을 수 있는 지 확인? 아니오

- 재전송 요청? 아니오

----> 아무것도 안하니까 빠른 처리 가능( 도착하면 바로 사용자에게 보여주거나 바로 처리함)

- 주로 실시간 음성이나 화면을 처리하는데 사용 ex) 화상회의, 온라인게임

- 시스템간에 네트워크 상태 정보(패킷개수 통계등), 시간동기화, DNS정보, 간단한 요청 등을 처리 ---> 크기가 매우 작음

 

• TCP/IP Packet의 유형

 

• Data Link Layer Procedure

- 2계층이다.

- 목적지 MAC address가 일치하는지 확인한다.

- 자신의 LANcard에 있는 MAC주소와 프레임의 목적지 MAC주소가 일치하지 않으면 버리는게 정상

버리지 않고 수신하도록 설정하는 것을 Promiscuous Mode (마구잡이 모드) 라고 한다.

 

WireShark 실습

1) telnet_sniff.pcapng

텔넷으로 접속한 사용자의 ID와 PW는 무엇일까요?

※ Telnet은 암호화가 되지 않기 떄문에 사용할 경우, Sniffing(도청)의 위험이 매우 높다 ---> SSH(SecureShell)을 사용해야 한다.

Anzlye -> Follow -> TCP Stream을 선택을 해서 TCP의 흐름을 한번에 볼 수있다.

븕은색 글씨는 Clinet가 Server에게 보내는 내용

푸른색 글씨는 Server가 Client에게 보내는 내용

※ ID가 한글자씩 번갈아가면서 색깔이 다르다 ( Client가 입력할 때마다 Server에서 확인으로 다시 알려준다(Echo))

 

2) ftp-clientside101.pcapng

FTP로 전달된 파일을 추출하세요.

WireShark를 보면 pantheon.jpg 파일이 요청이 되었다는걸 확인할 수 있다.

 

FTP와 FTP-DATA의 차이는 무엇일까요?

FTP : 21port --> 명령어 수신하는 포트

FTP-DATA : 20port --> 파일을 송수신하는 포트

FTP-DATA

FTP-DATA에 오른쪽 마우스 클릭 > Follow > TCP Stream 선택

※ TCP Stream을 선택한 이유 : 분할된 패킷을 재조립을 하기위해

FTP-DATA

ASCII를 RAW로 바꾸고 Save as 클릭,  pantheon.jpg로 저장

결과 화면

 

3) whoisshe.pcapng

사진의 주인공은 누구?

 

HTTP에 jpg 파일이 GET된걸 볼수 있다.

TCP프로토콜을 보면 1514크기의 파일을 보내는걸 볼수가 있다. TCP Stream으로 확인을 해보자.

다른 부분은 필요없고 Server에서 JFTF파일의 내용의 내용만 필요하다.

ASCII에서 Raw로 수정을 하고 저장을한다.

HeD에디터를 실행 시키후 저장된 파일을 열어 FF D8 FF E0( JPG의 파일 시그니처)찾아 그 이전부분은 불럭설정 후 삭제해준다.

결과 화면

4) 네이버 검색캡쳐.pcap

네이버로 검색한 단어는?

※ 찾는 방법

1. 검색은 GET 요청을 보낸다. => http.request.method == GET
2. Edit -> Find Packet -> String 으로 변경하고 search 검색를 해서 찾는다.
3. Display Filter 에 frame matches search를 입력해서 찾는다.

 Edit -> Find Packet -> String으로 변경하고 search 을 검색한다.

 

5) lemieux.pcap

파티에 참석하기 위한 비밀문구는 무엇일까요?

frame contains "검색어" : 정확하게 일치하는 것만 찾는다.

frame matches "검색어" : 대소문자 구분없이 비슷하면 모두 찾는다.

메일 내용 부분을 보기 편하게  bluebell decoder 을 사용해보자

메일 내용을 URL 디코딩을 사용해 불필요한 특수문자를 제가한다.

 

6) 1_evidence01.pcap

회사 내부의 스파이를 잡아라
• Anarchy-R-Us, Inc.는 직원 중 한 명인 Ann Dercover가 실제로 경쟁업체를 위해 일하는 비밀 요원이라고 의심합니다. Ann은 회사의 상품 자산인 비밀 레시피에 접근 권한이 있습니다.
• 보안 직원은 앤이 회사의 레시피를 누설할까봐 걱정합니다. 보안 직원은 한동안 앤의 활동을 모니터링했지만 지금까지 의심스러운 점은 발견하지 못했습니다.
• 오늘 예상치 못한 노트북이 회사 무선 네트워크에 잠깐 나타났습니다. 직원은 건물에 낯선 사람이 보이지 않았기 때문에 주차장에 있던 사람일 것이라고 추측합니다.
• Ann의 컴퓨터(192.168.1.158)가 무선 네트워크를 통해 이 컴퓨터로 IM을 보냈습니다. 의심스러운 노트북은 얼마 지나지 않아 사라졌습니다. 보안 직원은 "활동에 대한 패킷 캡처를 가지고 있지만 무슨 일이 일어나고 있는지 알 수 없습니다. 도와주시겠습니까?“ 당신은 법의학 수사관입니다

tcp.stream eq 0 부터 숫자를 하나 씩 올리면서 TCP Stream을 확인을 한결과 tcp.stream eq 2부분에 SSL 프로토콜을 사용해 데이터 전송이 있다는걸 확인했다.

TCP Stream

1. Ann은 IM(Sec558user1)친구한테  "Here's the secret recipe... I just downloaded it from the file server. Just copy to a thumb drive and you're good to go " 이라는 내용과 함께 recipe.docx이라는 파일을 보냈다. 즉, 우리가 찾아야 하는건 recipe.docx 파일이다.

tcp.stream eq 0 부터 하나씩 TCP stream를 해보자..

tcp.stream eq 5

tcp.stream eq 5 에서 PK라는 docx 파일의 시그니처 번호를 발견할수 있다

파일을 raw로 만든후 저장을한다.

저장된 파일을 HxD 프로그램으로 PK이전의 값들을 지우고 저장을 한다.

그 결과 recipe.docs 파일을 추출할수 있었다.

파일의 MD5값을 확인해 보자.

 

* 해시값 계산방법

- Fasthash_kr.exe : 파일의 해시값을 계산

 

 

 

7) 2_evidence02.pcap

보석금으로 풀려난 후 앤 더커버는 사라집니다! 다행히 조사관은 그녀가 마을을 빠져나가기 전에 네트워크 활동을 주의 깊게 모니터링하고 있었습니다.
"우리는 앤이 떠나기 전에 비밀 애인인 Mr.X와 대화를 나눴을 것이라고 생각합니다."라고 경찰서장이 말했습니다. "패킷 캡처에는 그녀의 행방에 대한 단서가 포함될 수 있습니다."
당신은 법의학 수사관입니다. 당신의 임무는 앤이 무엇을 이메일로 보냈고 어디로 갔는지 파악하고 다음을 포함한 증거를 찾는 것입니다.

 

tcp.stream eq 1 에서 SMTP 프로토콜을 발견할 수 있다.

 

단순 전자우편 전송 프로토콜(SMTP)은 네트워크를 통해 전자우편(이메일)을 전송하는 기술 표준이다.

 

TCP Stream

TCP Stream을 한 결과 AUTH LOGIN 이 보인다. 즉 이부분이 ID와 PW라고 추측을 할 수 있다. 

BlueBell

Blue Belll 프로그램을 사용해 base64 디코딩을 한 결과 ID와PW를 찾을수 있었다.

TCP Stream

TCP Stream를 내리다보면 filename = "secretrendezvous.docx" 라는 파일이름이 보이는거 보니 밑에 부분은 내용이라고 추측를 해보자.

SMTP 프로토콜이기 때문에 확장자를 eml를 사용해 저장을 한다.

 

• Email 과 Web mail 차이

- Web Mail은 웹 브라우저로 열어봅니다

- Email은 Outlook, Outlook Express,메일(Windows10)

 

대화 내용을 열어본 결과 파일과 함께 내용이 적혀있다.

secretrendezvous.docx

파일 안에는 만나기로한 사진이 있다.

 

8) 3_evidence03.pcap

당신은 법의학 수사관입니다. 당신의 임무는 앤이 무엇을 검색했는지 알아내고, 그녀의 관심사에 대한 프로필을 작성하고, 다음을 포함한 증거를 회수하는 것입니다.

1. AnnAppleTVMAC 주소는 무엇입니까?
2. AnnAppleTVHTTP 요청에서 어떤 User-Agent 문자열을 사용했습니까?
3. AnnAppleTV에서 처음 4검색어(모든 증분 검색 포함)는 무엇이었습니까?
4. 앤이 클릭한 첫 번째 영화의 제목은 무엇이었습니까?
5. 영화 예고편의 전체 URL은 무엇이었습니까("preview-url"로 정의됨)?
6. 앤이 클릭한 두 번째 영화의 제목은 무엇이었습니까?
7. 구매 가격은 얼마였습니까("price-display"로 정의됨)?
8. Ann이 마지막으로 검색한 전체 용어는 무엇입니까?

 

Edit 의 Packet find 기능을 이용해 MAC 주소를 찾아보자. 

HTTP Stream

HTTP 프로토콜에서 Follow HTTP Steam을 클릭을 하여 User-Agent 을 확인했다.

 

tcp.stream eq 0부터 시작을 해서 하나씩 증가시키면서 확인을 했다.

tcp.stream eq 2에서 h 를 검색했다는걸 발견할 수 있었다.

tcp.stream eq 2를 계속 내리다 보면 hack이라는 문자를 검색한걸 발견할 수 있다.

tcp.stream eq 8에서도 맞찬가지로 s 라는문구를 찾을수 있다.

tcp.stream eq 로 이동하면서 찾았다.

계속 tcp.stream eq를 이동하면서 찾는게 힘들어 url 반복도는 search 문구를 find packet으로 해서 찾아보았다.

URL에 Hackets 페이지로 이동이 된 HTTP 프로토콜을 볼수 있다.

두번째로 이동한 페이지는 Sneakers 이다.

precview-url 를 검색해보니 하나의 캡처가 보인다.

 

HTTP Stream으로 확인을 하였다.

가격을 알아내기위해 price 로 검색을 하였을때 가격이 4990인걸 확인을 했다

어떤 영화인지 확인을 위해 HTTP Stream을 확인했다.

Hackers라는 영화이다.

위 Hackers와 똑같은 방법으로 두번째 영화인 Sneakers 가격이 9990이라는 걸 확인을 했다.

 

• 스캐닝

- 열린포트에서는 ACK/SYN로 응답, 닫힌포트에서는 ACK/RST로 응답 ---> 열린포트를 알 수 있다.

1. TCP SYN Scan(Half Open Scan, Stealth scan)

- SYN를 보내고, 서버의 포트가 열려있는지만 확인하고,마지막 ACK를 안보냄 ---> 연결이 이루어지지 않음

2. TCP ACK Scan

- ACK를 보내서 응답이 없으면 열린포트, RST가 오면 닫힌 포트

3. UDP Scan

- 실행중인 포트에서 UDP응답이 옴 (UDP는 HandShaking이 없으므로, 닫힌포트는 ICMP destination unreachable)

4. TCP Connect Scan (연결 완성)

- SYN를 보내서, ACK/SYN가 오면 ACK를 보내줌 ---> 정상연결

5. TCP Xmas

- TCP Flag를 모두 1로 만들어서 보내는 공격 : 111111 ----> Flag 6개를 모두 활성화(엉터리 로직)

- 열린포트는 응답없음, 닫힌포트는 RST를 보냄 ---> 구분 가능

6. TCP RST

- RST를 보내는 기법( 잘 사용 안함)

 

9) 4_evidence04.pcap

 

(다시 풀어보기)

* Apple MAC : Hardware와 OS를 같이판매 ---> MAC주소에 Apple이라고 나옴

 Windows : Hardware는 MAC주소가 Network 장비 회사, OS는 TTL=128로 응답, 135번 포트 열려있음

 

*TCP Flag 순서 " UAPRSF

U:32 A:16 P:8 R:4 S :2 F : 1

열린포트에서 어떻게 응답 ?? ACK/SYN ---> 010010 --> 16+2 =18 디스플레이 필터 : tcp.flage == 18

- ACK로 응답하는지 확인하려면 ? ---> 010000 --> tcp.flags == 16