포트 스캔
타겟의 어느 포트의 서비스를 운영하는지 파악하기 위해 수행
타겟이 특정 서비스를 운영 중이라면 해당 서비스와 관련된 프로그램의 취약점으로 공격 가능
준비 환경
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 과정을 전부 수행하기 때문에 타겟에게 해커의 정보가 남게된다

CentOS(192.168.1.100)의 22번 포트를 스캔
TCP의 3-Way HandShake 과정을 모두 거친 것을 확인할 수 있으며
마지막에 Kali(192.168.1.77)가 CentOS(192.168.1.100)에게 응답을 보냄으로써 타겟에게 접근 정보를 남기게 된다

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 과정을 전부 수행하지않고 중간에 확인만하고 중단하기 때문에 타겟에게 해커의 정보가 남지 않는다

CentOS(192.168.1.100)의 22번 포트를 스캔
TCP의 3-Way HandShake 과정을 모두 거친 것이 아니라 ACK 패킷을 보내지 않음으로써 일방적으로 끊은 것을 확인할 수 있다

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로 응답

CentOS(192.168.1.100)의 22번 포트를 스캔
CentOS(192.168.1.100)에게 FIN 패킷을 보냈지만 응답이 없는 것으로 보아 22번 포트는 열려있다는 것을 확인할 수 있다

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로 응답

CentOS(192.168.1.100)의 22번 포트를 스캔
CentOS(192.168.1.100)에게 FIN+PSH+URG 플래그를 보냈지만 응답이 없는 것으로 보아 22번 포트는 열려있다는 것을 확인할 수 있다

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로 응답

CentOS(192.168.1.100)의 22번 포트를 스캔
CentOS(192.168.1.100)에게 플래그 없이 패킷을 보냈지만 응답이 없는 것으로 보아 22번 포트는 열려있다는 것을 확인할 수 있다

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 패킷으로 응답

CentOS(192.168.1.100)의 22번 포트를 스캔
CentOS(192.168.1.100)에게 UDP 패킷을 보냈지만 응답이 없는 것으로 보아 22번 포트는 열려있다는 것을 확인할 수 있다

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와 섞어서 보내는 공격

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번 포트는 열려 있다는 것을 확인할 수 있다

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로 위장해서 스캔 공격