3way-handshake nmap의 스텔스 스캐닝 이해

3way-handshake와 nmap 스텔스 스캐닝
이전 기사 pWnOS:2.0의 취약성 서버에 대해KaliLinux를 사용하여 루트 권한을 얻었습니다.
Kali Linux에서 포트 스캔을 할 때 사용하는 nmap이라는 도구로 대상 서버에서 로그를 남기지 않는 스텔스 스캔을 할 수 있습니다.
이번에 나는 이 nmap의 스텔스 스캐닝을 실현하는 TCP 프로토콜의 3way-handshake를 총결하고 싶다.
3way-handshake와?
3way-handshake는 통신의 신뢰성을 확보하기 위해 TCP 헤더 정보의 표지를 이용한 통신 방법이다.
이 3way-handshake가 끝난 후 TCP 연결을 구축하고 상급층에서 HTTP 통신 등을 진행한다는 뜻이다.
TCP 연결을 위한 3way-handshake 구현
다음은 3way-handshake의 TCP 연결을 실현하는 것을 총괄한다.
원래 TCP는 편지에 6개의 표지 정보를 가지고 있다.
그런 다음 각 플래그에서 TCP 연결에 사용되는 플래그 정보를 1비트(0 또는 1)로 관리합니다.
3way-handshake에는 통신 구축을 위한 SYN(Synchronize) 로고, 통신 가능 ACK(Acknowledge) 로고를 확인했다는 의미, 통신을 강제로 끊었다는 RST(Reset) 로고가 6개 사용됐다.
클라이언트 서버 간의 그룹에서 이 로고를 설정해서 통신이 가능한지 불가능한지 판단합니다.
구체적인 통신 절차는 다음과 같다.
※ 패키지(TCP 세그먼트)는 TCP의 헤드와 TCP 유효 하중(데이터)으로 구성됩니다.
※ 일련 번호는 TCP 헤더에 기재된 그룹에 추가된 일련 번호입니다.
3way-handshake의 통신 예
① 클라이언트 측에서 일련 번호가 10000이고 SYN 로고가 1인 SYN을 그룹으로 나누어 서버 측에 보낸다.
② 서버 측은 통신이 가능한 경우 ACK 플래그 1, 일련 번호를 보낸 SYN 그룹에서 1을 발 10001로 설정한 ACK 그룹을 클라이언트 측에 되돌려준다.
또한 클라이언트 측에서 어떤 일련 번호를 기점으로 통신할지 결정하기 위해 30000의 일련 번호를 가진 SYN 그룹을 클라이언트 측으로 새로 되돌려줍니다.
③ 클라이언트 측에서 보내온 SYN 그룹의 번호를 1을 더한 3001로 설정하고 ACK 그룹을 서버 측으로 되돌려 통신한다.(이 SYN 그룹은 서버의 응답만을 나타내므로 SYN 플래그를 0으로 설정)
통신이 불가능한 경우 ②에서 RST 플래그가 1개의 패킷을 반환하므로 통신이 강제로 종료됩니다.
nmap의 TCP 전체 연결 검색
여기서 3way-handshake를 사용하는 nmap의 통신 방법을 소개하고 싶습니다.
nmap에서 -sT로 스캔 유형을 설정하여 TCP 전체 연결 스캔을 수행할 수 있습니다.
이 TCP 전체 연결 스캔은 방금 설명한 3way-handshake의 TCP 연결이 실천된 연결 방법이다.
root@kali:~# nmap -sT 対象IPアドレス
nmap의 TCP 반접속 검색 TCP Full Attached Scan에 비해 -S 옵션을 TCP 반접속 Scan이라고 합니다. TCP 반접속 스캔에서 통신이 성공하더라도 아까 ③단계에서 SYN 그룹을 보내지 않습니다. 서버측에서 되돌아오는 패키지가 SYN/ACK 또는 RST인지 포트가 비어 있는지 (통신할 수 있는지) 판단하기 때문에 서버에서 로그를 남기지 않고 확인할 수 있습니다. root@kali: #nmap-S 개체 IP 주소 Wireshark으로 3way-handshake 확인하기 실제 Wireshark라는 그룹 흐름을 관찰할 수 있는 Kali Linux 도구를 사용해 nmap을 통해 3way-handshake가 어떤 통신을 하는지 확인한다. 여기에는 pWnOS:2.0에서 설정한 IP 주소와 같고 클라이언트 측의 IP는 10.10.10, 서버 측의 IP는 10.10.10.100으로 설정되어 있습니다. Kali Linux를 먼저 열고 wireshark 명령을 입력합니다. root@kali:~# wireshark Wireshark 보안이 향상되었습니다. eth0 을 선택하십시오. 그리고 다른 탭에서 터미널을 열고 nmap 명령으로 포트 80을 스텔스 스캔합니다. root@kali:~# nmap -sS -p 80 10.10.10.100 nmap 명령을 입력하면 패킷 정보가 나오기 때문에 WIRESHARK를 엽니다. Source는 통신 소스 서버이고 Destination은 통신 대상 서버입니다. 이렇게 하면 No.12시에 클라이언트에서 서버 측에 SYN 그룹을 보내고 No.13시에 서버에서 SYN/ACK 그룹으로 돌아가며 No.13시에 RST 그룹을 통해 연결을 끝냅니다. 이렇게 Wireshark를 사용하면 nmap의 3way-handshake를 사용한 TCP 통신 절차를 볼 수 있다 참조 링크 https://resources.infosecinstitute.com/nmap/#gref
https://www.atmarkit.co.jp/ait/articles/0801/08/news127_2.html
http://www.yk.rim.or.jp/~shikap/security/vul_text/attack1.html
http://www.yk.rim.or.jp/~shikap/security/vul_text/TCPIP1.html
http://www.yk.rim.or.jp/~shikap/security/vul_text/TCPIP2.html
http://www.yk.rim.or.jp/~shikap/security/use_nmap.html
https://ascii.jp/elem/000/000/619/619702/
https://milestone-of-se.nesuke.com/nw-basic/tcp-udp/tcp-connection/
https://qiita.com/55momotara55/items/2081312e1dd14521c0a1
https://www.infraexpert.com/study/tcpip8.html

좋은 웹페이지 즐겨찾기