공부/시스템,네트워크 보안

9월 16일 시스템/네트워크 보안 2

마준123 2022. 9. 16. 10:12

 * 인터넷의 시작

 = 통신 장치들이 호환이 안됨 ( 네트워크 장비를 만드는 회사들이 독자적 기술을 사용했기 때문!)

 =  ARPA가 장비 종류가 달라고 통신이 가능하도록 프토로콜을 개발함 ( ARPAnet : 빈트서프, 로버트 칸 )

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

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

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

 

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

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

 = 순차전송 : 순서대로 도착해야 함 , 중간에 못 받은 것이 있으면 그 뒤는 다 버림, 재전송 요청

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

 

 * Port 번호

 = System port  : 0~1023 ( Well known Port : 용도가 미리 지정되어 있다는 의미 ) ----> Server용 포트

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

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

 

 Ex) Web Browser가 50000번을 사용해서 Web Server의 443포트에 접속하려고 함 

   -------------> TCP Header의 Source port 는 50000, Destination port는 443

 

 * TCP Header

 = Sequence Number : TCP Segment가 분할된 경우, 순서 번호가 들어감

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

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

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

 

 * TCP Flag : TCP의 속성을 나타냄

 = URG : Urgent ( 긴급 )

 = ACK : Acknowledge ( 응답 )

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

 = RST : Reset ( 연결해제 )  // "OK캐쉬백 얼마 있구요~,  보험 가입 하실래요?" 하니까 바로 끊기 and 도를 아십니까?

 = SYN : Syncronization ( 동기화 요청, 연결 요청 ) // 데이터를 보내도 될까요? 물어보는것 ---> ACK가 오면 그때부터 보내기 시작

 = FIN : Finish ( 종료 요청 ) // 엄마 저 이제 전화 끊어야돼요~

    EX )  1bit씩 할당, 순서는 UAPRSF

                             000010 ----->SYN 연결 요청

                             010010 ----->ACK/SYN 

                             000001 ----->FIN

 

* UDP

 = 순서 체크 하나요? 안함

 = 경로 확보 하나요? 안함

 = 상대방이 얼마나 받을 수 있는지 확인? 안함

 =  재전송 요청 하나요? 안함

        ------------------> 아무고토 하지 않으니까 빠른 처리 가능 ( 가는 속도는 더 빠른건 아니지만 도착하면 바로 사용자에게 보여주거나 바로 처리됨 )

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

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

 

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

   -----> 하지만 배우자의 전 애인이 보낸 편지를 뜯어보듯 버리지 않고 수신하도록 설정하는 것을 Promiscuous Mode( 마구잡이 모드 ) 라고 함

와이어 샤크에서 볼 수 있는 Promiscuous Mode

 

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

 

실습 ) telnet_sniff.pcapng

 = 목표 : Telent으로 접속한 사용자의 ID와 PW는 무엇일까요?

 

 

아무 TELNET이나 오른쪽 마우스 누르고 TCP stream 선택 ---> TCP의 흐름을 한번에 보는 방법

빨간건 클라이언트가 서버로

파란건 서버가 클라이언트로 보내는것

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

 ------>예전에 인터넷이 구릴때 확인하는용도로 사용하는게 기능이 남아있는 것.

Login : blackpink

Password : love

 

 cf. Telent은 암호화가 되지 않기 때문에 사용할 경우, Sniffing(도청)의 위험이 매우 높음 ----> 사용금지!!( Windows에서 지원안됨)

   ---->SSH(SecureShell)을 사용해야함

 

실습 ) ftp-clientside101.pcapng

 = 목표 : FTP로 전달된 파일을 추출하세요

 = FTP와 FTP-DATA의 차이는 무엇일까요? TCP 헤더에 있는 포트번호

 = FTP : 21 ----> 명령어를 송,수신하는 포트

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

     그러면  FTP는 냅두고 FTP-DATA중 아무거나 우클릭 - 팔로우 - TCP Stream

show data as 를 raw로 바꾸고 save as 를 누르고 pantheon.jpg로 저장해준다

 

 * Follow TCP Stream을 왜할까?

 = 보낸 정보를 한번에 보려고 ----> 그러면 왜 나눠져 있지?

 = TCP분할 과정을 거쳤기 때문에!

 

 

실습 ) whoisshe.pcapng

= 목표 : 사진의 주인공은 누구?

 

유라의 사진을 GET요청 후 

1514 를 꽊꽊 채워서 보내는걸 보니 사진을 보내는 중일것.

 

아까처럼 일단 저장한다.

HxD로 열어서 

jpg 파일의 파일 시그니처 이전까지 다 삭제한다

그리고 저장~

사진을 열면 걸스데이 유라가 서있다.

 

실습 ) 네이버 검색캡쳐.pcap ( 나는  매우 어려웠다 ㅠ )

 

 = 목표 : 네이버로 검색한 단어는?

     방법 1 )검색은 : GET 요청을 보내짐 ---> http.request.method == GET

     방법 2 ) Edit - Find Packet - String 으로 변경하고 search 검색

     방법3 ) Display Filter 에 frame matches search를 입력해서 찾음

 

실습 ) lemieux.pcap

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

 

 내가 아는 친구가 뉴욕의 술집을 빌려서 파티를 계획하고 있습니다. 초대를 받지 못했지만, 파티에 참석하고 싶습니다. 다른 친구가 초대받은 메일을 스니핑 했습니다. 그 메일에 있는 비밀문구를 알면, 파티에 들어갈 수 있습니다. 그 비밀 문구는 무엇일까요?

 

정답은 브루클린 비트박스~

이렇게 까지 말했는데 스니핑 까지 해가면서 이악물고 가는....자괴감 들고 괴로워.....

 

 = 해설 =

  hint ) Email을 찾아야 하고 , 키워드 (party, friend, newyork, Invitation, secret 등등 ) 을 찾아야함~

  frame contains party

  Follow TCP Stream

  저걸 복사해서 BlueBell Decoder 밑에 넣고 UTF-8 누르면 보기 더 편하게 나오긴한다.

 

 *  그러면 frame contains 와 frame matches 의 차이는 뭘까?

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

 = frame matches "검색어" : 대소문자 구분 없이 비슷하면 모두 찾아줌, PCRE ( 정규 표현식, Perl Compatible Regular Expression ) 을 사용 가능

 

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

 

실습 ) 1_evidence01.pcap, 2_evidence02.pcap

 

 =  목표 회사 내부의 스파이를 잡아라

무슨 방탈출 게임하는 것 같다.

그리고 Recipe.docx 파일도 찾아서 Raw 로 다운로드 해준다

 

 

그리고 HxD로 열어서 파일시그니처 이전 부분을 삭제 해준다.

참고 : docx 파일은 파일 시그니처가 PK로 시작한다.

 

 

그런데 당황스럽지만 Word가 자동으로 복구를 해주었다..

하지만 HxD 를 열어서 PK부터 이전의 내용을 지워주고 파일을 저장해준다.

그러면 완성~

 

 * 해시값 계산방법

 = Fasthash_kr.exe, Bluebell_decoder  : 파일의 해시값을 계산

MD5

 

실습 ) 2_evidence02.pcap

패킷때매 걸려놓고 또 패킷을 남기고 가는 앤 더커버 씨

 

 

일단 frame matches Mr.x 을 해보자

 

 2 6 7 8 

바로 1,3 클리어

 

 

조금 더 내리면 4,5도 클리어 할 수 있다.

* 비밀번호 : 558r00lz   // 2클리어

 = pass 를 검색해서 password 라고 나오는 값을 base64 디코딩함

 cd. 유명 해킹 그룹 : Lulzsec( 룰즈섹 ) 의 오마주 r00lz

 

 * Email 과 Web Mail 차이는?

  = 웹메일은 웹브라우저로 열어봄

  = 이메일은 아웃룩,아웃룩 익스프레스 , 메일( 윈도우 10 ) --> 확장자는? eml

 

eml을 열었더니 이런게 나온다

만나기로한 장소는 멕시코의 플라야 델 카르멘 ( playa del carmen ) 이다. // 5,7 클리어

 

이제 MD5 ( 해시값 ) 은 블루벨 디코더나 패스트해시 등을 사용하면된다.

이메일 : 9E423E11DB88F01BBFF81172839E1923

이메일 속 그림 : 2DEDA162E18ACC15FB9BE01F012559D5

 전부 클리어~~

 

실습 ) 3_evidence03.pcap

= 도망간 스파이를 잡아라!

 

 

MAC : 00:25:00:fe:07:c4

User-Agent: AppleTV/2.4

검색어 : hack

 

 

 = 할게 너무많아서...필기는 pass 그리고 해설 중간에 끕똥이 찾아와서...... pass...

 

tcp.stream eq 18 부터 시작

iknowyourewatchingme  // 조금 소름돋는 문장

 

지금까지 강사님이 찾은 제목은

hack

sneb ( 증분 검색 )

sneak

iknowyourewatchingme

 

 = 프리뷰 url 찾기Edit - 파인드 패킷 - 왼쪽에 패킷 디테일스 - 오른ㅁ쪽에 preview 검색

 

( 패킷 리스트, 패킷 디테일스 차이 : 패킷 리스트는 겉에 부분만 살짝 검색하는거고 패킷 디테일스는 안쪽 바디값까지 다 뜯어서 디코딩 후  검색해줌! )

 

312번 패킷URL : /WebObjects/MZStore.woa/wa/viewMovie?id=333441649&s=143441

 

= 구매가격 찾기

검색창에 price-display 검색하면 나온다.

두번째 가격인 9.99달러가 정답이었다 ( Sneakers 의 가격 )

 

정답들

 

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

 

실습 ) 4_evidence04.pcap

사고를 좀 많이 치시는분 // 불행히도 는 Mr.X에게 해당되는 말 ㅋ

 

 * 스캐닝

 = 열린 포트에서는 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개를 모두 활성화 ( 엉터리 로직 ) ,  크리스마스 전구처럼 다 11111로 켜져있어서 이름이 Xmas~ 

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

 

 6. TCP RST

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

 

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

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

 

 * TCP Flag 순서 : UAPRSF 

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

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

 

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

2번의 답 : TCP Connect Scan

3번의 답 : 10.42.42.25 / 10.42.42.50 / 10.42.42.56

4번의 답 : 00:16:cb:92:6e:dc / 00:23:8b:82:1f:4a /70:5a:b6:51:d7:b2 맨 마지막꺼인듯

5번의 답 : 10.42.42.50

6번의 답 : 너무 어렵다