[네트워크해킹] 02. 스캐닝
공격할 대상의 정보를 알아 내기 위해 스캐닝 하는 것으로, 공격을 위해 열려져 있는 서비스 여부, 포트 정보, OS정보 등을 알아낼 수 있다.
공격할 대상의 정보를 알아 내기 위해 스캐닝 하는 것으로
공격을 위해 열려져 있는 서비스 작동 여부, 포트 정보, OS정보 등을 알아낼 수 있다.
대표적인 스캐닝 도구로 nmap이 있다.
1. 스캐닝으로 얻을 수 있는 정보
1) 호스트 존재 여부 확인(Open/Close)
2) 호스트 운영체제 정보
3) 호스트가 있는경우, 어떤 포트가 열려 있는지 확인
4) 방화벽 정보
2. 스캐닝 종류
1) ICMP Scan
운영체제마다 ICMP 패킷을 보내는 바이트 크기 및 TTL 값등이 다르기 때문에, ping 명령어로 많은 것을 알 수 있다.
- 패킷 크기 : 윈도우 32bit, 리눅스 56bit
- TTL 값 :
운영체제 | ICMP Request TTL | ICMP Reply TTL |
리눅스 커널 2.6 | 64 | 64 |
리눅스 커널 2.2-2.4 | 255 | 64 |
리눅스 커널 2.0 | 64 | 64 |
우분투 | 128 | 128 |
FreeBSD | 255 | 255 |
솔라리스 | 255 | 255 |
HP-UX | 255 | 255 |
윈도우 95 | 32 | 32 |
윈도우 98 | 128 | 32 |
윈도우 NT | 128 | 32 |
윈도우 서버 2003, 2008, 2012 | 128 | 128 |
윈도우 10 | 64 | 64 |
2) TCP/UDP Scan
[1] TCP Open Scan
: 3-way handshake를 모두 수행하기 때문에 상대방의 시스템에 로그가 남는다.
: 방화벽에 의해서 Filtered될 때 : 응답이 없거나 ICMP Unreachable 응답이 온다.
■ 포트 열렸을 때 : 3-way-handshake처럼 SYN + ACK 응답이 온다. 그러면 그에 대한 응답으로 ACK를 보낸다.
■ 포트 닫혔을 때 : RST + ACK 응답이 온다.
[nmap 명령어]
nmap -sT [ip]
[2] Stealth Scan : 세션을 완전히 성립하지 않고 스캔을 하는 방법
1. TCP Half Open 스캔
: 3-way-handshake를 모두 수행을 하지 않는다.
■ 포트 열렸을 때 : SYN+ACK 응답이 온다. 그러면 RST 패킷을 보내 연결을 맺이 않고 연결을 강제종료한다.
■ 포트 닫혔을 때 : RST+ACK 응답이 온다.
[nmap 명령어]
nmap -sS [ip]
[nmap 사용 결과] syn 스캔
2. FIN, NULL, XMAS 스캔
- FIN 스캔 : 플래그 값을 FIN으로 설정한 패킷을 이용
- NULL 스캔 : 플래그 값을 아무것도 설정하지 않은 패킷을 이용
- XMAS 스캔 : 플래그 값을 모두(ACK, FIN, RST, SYN, URG) 설정한 패킷을 이용
참고) TCP 헤더에서 플래그의 위치
■ 포트 열렸을 때 : 응답 없음
■ 포트 닫혔을 때 : RST
[nmap 명령어]
nmap -sF [ip]
nmap -sN [ip]
nmap -sX [ip]
[예시]
두개의 가상머신을 준비한 뒤
1번 머신 : nc를 통해 11번 포트를 열어 둔다. (명령어 : nc -lnv 11)
2번 머신 : nmap을 한 결과이다. (XMas 스캔)
[3] UDP Scan
UDP는 TCP와 달리 3-way-handshake를 수행하지 않음
■ 포트 열렸을 때 : 응닶없음
■ 포트 닫혔을 때 : ICMP Unreachable
[nmap 명령어]
nmap -sU [ip]
3) 운영체제 스캔
- 배너 그래빙 : 서비스별로 접속 시 제공하는 정보를 통해서 서비스의 정보를 파악하는 스캔 방법
참고 : nmap 사용법
설명 | 옵션 | 설명 |
스캔유형 | ||
-sS | TCP SYN 스캔 | |
-sT | TCP Open 스캔 | |
-sP | Ping을 이용한 스캔 | |
-sA | ACK 패킷에 대한 TTL 확인 (방화벽 규칙상태 확인) | |
-sR | RPC이용해서 스캔 | |
-sW | 윈도우 스캔 * 특정 장치에 대한 OPEN/CLOSE 포트 구별 |
|
-sI | idel 스캔 * 가장 은밀한 스캔으로, 느리고 복잡하다 |
|
-sU | UDP 스캔 | |
-sF | FIN 패킷 이용해 스캔 | |
-sX | XMAS 스캔(모든 플래그 설정) | |
-sN | NULL 스캔 (플래그를 설정) | |
-O | 대상 호스트의 운영체제 스캔 | |
=PN | 호스트가 살아있는지 ping을 하지 않음으로 log 파일에 기록됨 | |
포트옵션 | ||
-p 포트번호 | ||
output 옵션 | ||
-v | 출력을 자세하게 | |
-w | 출력을 더 자세하게 | |
-oN <파일명> | 일반 파일 형식으로 출력 | |
-oX <파일명> | XML 파일 형식으로 출력 |