포트 스캔
타겟의 어느 포트의 서비스를 운영하는지 파악하기 위해 수행
타겟이 특정 서비스를 운영 중이라면 해당 서비스와 관련된 프로그램의 취약점으로 공격 가능
준비 환경
1. CentOS - 타겟, NAT, 192.168.1.100/24
2. Kali Linux - 해커, NAT, 192.168.1.77/24
데비안 계열인 Kali Linux 네트워크 설정법
/etc/network/interfaces 파일 수정
auto eth0
iface eth0 inet static
address 192.168.1.77
netmast 255.255.255.0
gateway 192.168.1.2
dns-nameservers 8.8.8.8
service networking restart
/etc/init.d/networking restart
수동 스캔
telnet [타겟 IP] [포트 번호]
텔넷으로 직접 타겟 IP와 포트 번호로 접근하여 확인
nmap 스캔 툴 이용
Kail Linux에서 CentOS로 포트 스캔하는 과정을 WireShark로 캡쳐 / 22번 포트만 열려 있는 상태
TCP Open Scan
nmap -sT -p [포트번호]-[포트번호] [타겟IP]
nmap -sT -p 1-100 192.168.1.100 // 192.168.1.100의 포트 번호 1~100번까지 TCP Open Scan 명령어
TCP 프로토콜의 3 Way-Handshake 과정
열려있는 포트에 TCP SYN 패킷을 보내면 SYN+ACK가 서버로부터 전달
닫혀있는 포트에 SYN 패킷을 보내면 RST+ACK가 서버로부터 전달, 이를 이용해서 확인하고 싶은 서비스의 포트로 SYN를 보내서 확인 가능
Open Scan의 경우 3 Way Handshake 과정을 전부 수행하기 때문에 타겟에게 해커의 정보가 남게된다
![](https://t1.daumcdn.net/cfile/tistory/99F604435BD94DB40E)
CentOS(192.168.1.100)의 22번 포트를 스캔
TCP의 3-Way HandShake 과정을 모두 거친 것을 확인할 수 있으며
마지막에 Kali(192.168.1.77)가 CentOS(192.168.1.100)에게 응답을 보냄으로써 타겟에게 접근 정보를 남기게 된다
![](https://t1.daumcdn.net/cfile/tistory/99DF3D4D5BD94DC434)
CentOS(192.168.1.100)의 23번 포트를 스캔
TCP의 3-Way HandShake 과정이 실패한 것을 확인할 수 있으며 23번 포트는 닫혔다는 것을 확인할 수 있다
TCP Half Scan
nmap -sS -p [포트번호]-[포트번호] [타겟IP]
nmap -sS -p 1-100 192.168.1.100 // 192.168.1.100의 포트 번호 1~100번까지 TCP Half Scan 명령어
Half Scan의 경우 3 Way-handshake 과정을 전부 수행하지않고 중간에 확인만하고 중단하기 때문에 타겟에게 해커의 정보가 남지 않는다
![](https://t1.daumcdn.net/cfile/tistory/9949624A5BD94FD611)
CentOS(192.168.1.100)의 22번 포트를 스캔
TCP의 3-Way HandShake 과정을 모두 거친 것이 아니라 ACK 패킷을 보내지 않음으로써 일방적으로 끊은 것을 확인할 수 있다
![](https://t1.daumcdn.net/cfile/tistory/998D614A5BD94FD70E)
CentOS(192.168.1.100)의 23번 포트를 스캔
TCP의 3-Way HandShake 과정이 실패한 것을 확인할 수 있으며 23번 포트는 닫혔다는 것을 확인할 수 있다
FIN Scan
nmap -sF -p [포트번호]-[포트번호] [타겟IP]
nmap -sF -p 1-100 192.168.1.100 // 192.168.1.100의 포트 번호 1~100번까지 FIN Scan 명령어
열려있는 포트는 FIN 패킷을 받았을 때 아무 반응이 없지만, 닫혀있는 포트는 RST+ACK로 응답
![](https://t1.daumcdn.net/cfile/tistory/99DD0A495BD950DB1E)
CentOS(192.168.1.100)의 22번 포트를 스캔
CentOS(192.168.1.100)에게 FIN 패킷을 보냈지만 응답이 없는 것으로 보아 22번 포트는 열려있다는 것을 확인할 수 있다
![](https://t1.daumcdn.net/cfile/tistory/99E0E0495BD950DC1E)
CentOS(192.168.1.100)의 23번 포트를 스캔
CentOS(192.168.1.100)에게 FIN 패킷을 보낸 결과, RST, ACK 응답을 보냈고 23번 포트는 닫혔다는 것을 확인할 수 있다
X-max Scan
nmap -sX -p [포트번호]-[포트번호] [타겟IP]
nmap -sX -p 1-100 192.168.1.100 // 192.168.1.100의 포트 번호 1~100번까지 X-mas Scan 명령어
FIN+PSH+URG 플래그를 이용하여 열려있는 포트는 아무 반응이 없지만, 닫혀있는 포트는 RST+ACK로 응답
![](https://t1.daumcdn.net/cfile/tistory/99C02E335BD9544D22)
CentOS(192.168.1.100)의 22번 포트를 스캔
CentOS(192.168.1.100)에게 FIN+PSH+URG 플래그를 보냈지만 응답이 없는 것으로 보아 22번 포트는 열려있다는 것을 확인할 수 있다
![](https://t1.daumcdn.net/cfile/tistory/9935D9335BD9544E28)
CentOS(192.168.1.100)의 23번 포트를 스캔
CentOS(192.168.1.100)에게 FIN+PSH+URG 플래그를 보낸 결과, RST, ACK 응답을 보냈고 23번 포트는 닫혔다는 것을 확인할 수 있다
NULL Scan
nmap -sN -p [포트번호]-[포트번호] [타겟IP]
namp -sN -p 1-100 192.168.1.100 // 192.168.1.100의 포트 번호 1~100번까지 NULL Scan 명령어
아무 플래그도 사용하지 않으며 열려있는 포트는 아무 반응이 없지만, 닫혀있는 포트는 RST+ACK로 응답
![](https://t1.daumcdn.net/cfile/tistory/99787A335BD954E233)
CentOS(192.168.1.100)의 22번 포트를 스캔
CentOS(192.168.1.100)에게 플래그 없이 패킷을 보냈지만 응답이 없는 것으로 보아 22번 포트는 열려있다는 것을 확인할 수 있다
![](https://t1.daumcdn.net/cfile/tistory/99DC93335BD954E32F)
CentOS(192.168.1.100)의 23번 포트를 스캔
CentOS(192.168.1.100)에게 플래그 없이 패킷을 보낸 결과, RST, ACK 응답을 보냈고 23번 포트는 닫혔다는 것을 확인할 수 있다
UDP Scan
nmap -sU -p [포트번호]-[포트번호] [타겟IP]
namp -sU -p 1-100 192.168.1.100 // 192.168.1.100의 포트 번호 1~100번까지 UDP Scan 명령어
UDP를 이용하여 열려있는 포트는 아무 반응이 없지만, 닫혀있는 포트는 ICMP Port Unreachable 패킷으로 응답
![](https://t1.daumcdn.net/cfile/tistory/990C52345BD9557201)
CentOS(192.168.1.100)의 22번 포트를 스캔
CentOS(192.168.1.100)에게 UDP 패킷을 보냈지만 응답이 없는 것으로 보아 22번 포트는 열려있다는 것을 확인할 수 있다
![](https://t1.daumcdn.net/cfile/tistory/99E73E345BD9557329)
CentOS(192.168.1.100)의 23번 포트를 스캔
CentOS(192.168.1.100)에게 UDP 패킷을 보낸 결과, Destination unreachable 응답을 보냈고 23번 포트는 닫혔다는 것을 확인할 수 있다
Decoy Scan
nmap -sT -p [포트번호]-[포트번호] -D [임의 IP],[임의 IP],.. [타겟IP]
nmap -sT -p 1-100 -D 1.1.1.1, 2.2.2.2 192.168.1.100
스캔할 때 설정한 IP를 출발지 IP로 설정해서 실제 해커의 IP와 섞어서 보내는 공격
![](https://t1.daumcdn.net/cfile/tistory/994449355BD9568F26)
CentOS(192.168.1.100)의 22번 포트를 스캔
CentOS(192.168.1.100)에게 X-mas Scan과 동일하게 FIN+PSH+URG 플래그를 보내지만 Kali Linux를 포함하여
설정한 IP주소(1.1.1.1, 2.2.2.2)도 포함하여 패킷을 보냈고 응답이 없는 것으로 보아 22번 포트는 열려 있다는 것을 확인할 수 있다
![](https://t1.daumcdn.net/cfile/tistory/992301355BD9569032)
CentOS(192.168.1.100)의 23번 포트를 스캔
CentOS(192.168.1.100)에게 X-mas Scan과 동일하게 FIN+PSH+URG 플래그를 설정한 IP주소(1.1.1.1, 2.2.2.2)를 포함하여 보낸 결과,
RST, ACK 응답을 보냈고 23번 포트가 닫혀 있다는 것을 확인할 수 있다
IDLE Scan
nmap -sI [도메인] -p [포트번호]-[포트번호] [타겟IP]
다른 IP로 위장해서 스캔 공격