*제한된 환경에서 실습 진행*
탐색(Scan, Scanning)
- Footprint 단계에서 수집한 정보의 사실 유무 확인 및 누락된 정보확인
- 대상시스템에 직접적으로 데이터를 전송하여 확인함
종류
- Active Host Scanning → 실제 동작중인 시스템 식별
- Active Host Scanning 종류
- ICMP echo ping : ICMP 메시지를 이용하여 동작중인 호스트를 식별하는 방식
- ARPing : ARP 패킷을 이용하여 동작중인 호스트를 식별하는 방식
- TCP ping : TCP 패킷을 이용하여 동작중인 호스트를 식별하는 방식
+ ack scan- UDP ping : UDP 패킷을 이용하여 동작중인 호스트를 식별 - Port Scanning → 동작중인 시스템에서 제공하는 서비스 식별
- UDP Port Scanning ▪ ICMP 메시지를 이용하여 동작중인호스트를식별하는방식
- TCP Port Scanning ▪ Connect( ) Scan(Full Connection Scanning)
▪ SYN Stealth Scan(Half Open Scanning)
▪ X-MAS Scan, FIN Scan, NULL Scan - Target Scanning → 특정 취약점을 제공하는 시스템 식별
- Vulnerability Scanning → 동작중인 시스템에서 발생할 수 있는 알려진 취약점 식별
1. Active Host Scanning💛
도구:
nmap
다양한 기능이 있고 scaning도구로도 굉장히 많이 쓰인다.
보안입장, 해커입장에서도 잘 쓰임.
scaning을 위해,
nmap -sP 192.168.50.0/24
를 치면 아래의 살아있는 네트워크를 알아온다.
같은 네트워크
ARPing
알아오는 방식은 아래로 확인 가능
ARP를 통해 살아있는 시스템을 식별한다.
broadcast방식으로 전부 보내고 있다.
그런데 이 arping은 arp 메시지를 보내는 것으로 같은 네트워크대역의 mac주소를 알아오는 것이다.
즉 같은 네트워크가 아닌 다른 네트워크 대역은 알아올 수 없다는 말.
arp request-> mac주소 응답하는 arp response 장비 식별
GNS가상환경 준비
다른 네트워크
ICMP echo ping
다른 네트워크 대역으로 날려본다
총 5개의 host를 알아왔다.
다른 네트워크니까 ICMP를 보낸다.
TCP 443번으로 SYN를 보내고 있는 것도 확인 가능
TCP ping
icmp echo request -> icmp reply
tcp syn -> dst port 443(https)
요즘은 icmp는 막아두는 곳도 많으니까 상대 장비가 구동 중인지 확인하기 위해 추가적으로 tcp syn요청을 보낸다
443번은 웹 https이니까 무조건 열려있어야 하므로
scanning (시스템 작동중인지 확인) |
nmap -sP 같은 네트워크 |
arp request-> mac주소 응답하는 arp response 장비 식별 |
nmap -sP 다른 네트워크 | icmp echo request -> icmp reply tcp syn -> dst port 443 |
-sP :ping 스캔하는 옵션 구버전
-sn은 포트스캔 없이 호스트가 살아있는지(ping sweep)만 확인하는 스캔 현재 버전
누구랑 대화 중인 걸까?
왜 tcp syn 443를 보내고 없는 네트워크로 80번으로 ack를 보내는 거지?
->🔧 그럼 80번 말고 다른 포트로도 할 수 있나?
물론 가능
→ 이렇게 -p 옵션으로 원하는 포트를 지정하면 ACK를 해당 포트로 보낸다.
syn를 보내지도 않았는데 ack를 보낸 이유는 아래와 같다.
근데 syn로는 아래 정보를 알 수 없나?
목적 | 포트 열림 여부 확인 | 방화벽(패킷 필터링) 규칙 확인 |
보내는 패킷 | SYN | ACK |
받는 응답 | SYN/ACK → 열림 (통신할 준비 완료) RST → 닫힘 |
RST → 비필터링 응답 없음 → 필터링 icmp desitination unrecharble(communication)라는 응답이 오면 패킷이 필터링 |
사용 포트 | 스캔 대상 포트 (예: 22, 80, 443 등) | 보통 80 또는 443 (기본값) |
설명 | TCP 3-way handshake의 시작을 흉내냄 | 이미 연결된 것처럼 속여 ACK 보내고 방화벽 반응 파악 |
ack는 80번이든 443이든 뭘로 보내도 상관이 없다. syn로는 못 알아내는 정보인 이유는,
syn를 보냈을 때는 열렸으면 응답이 올 것이고 닫혔으면 RST 혹은 응답이 없으면 존재하지 않는다는 것.
ack의 경우에는RST가 오면 비필터링이라는 거고 응답이 없으면 필터링 or 존재 X 이라는 것
그니까 syn로는 열렸는지 닫혔는지 혹은 존재하지 않는지만 알 수 있지만 ACK는 이미 연결되어 있다는 걸로 시작하니까 필터링이 되어 있는지, 비필터링인지 혹은 존재하지 않는지 알아내는 것!
ack를 전송하는 이유
ack scan (중요)
장비의 작동 여부나 port scan을 목적으로 하는 것이 아닌 목적 자체가 필터링 여부(목적지로 ack를 전달했을 때 중간에 필터링하는 장비가 있는지 없는지 확인하기 위한 목적)를 확인하기 위한 기법
1. ack전송 -> tcp rst(reset) 데이터가 응답하면 필터링이 없다는 의미
내가 보낸 ack가 필터링 없이 잘 전송되었다는 의미
2. ack 전송 -> icmp desitination unrecharble(communication)라는 응답이 오면 패킷이 필터링되었다는 의미
내가 보낸 ack가 중간에 필터링되었다는 의미
3. ack 전송 -> 응답이 아예 없음
필터링되었을 가능성이 높다 -> 추가 확인 필요
active host scanning에서 syn(포트 열렸는지),ack(방화벽 존재),살아있는 ip등을 알아오는 이유는,
(물론 실제 결과화면에서는 안 나오지만 공격시 진행한다.)
침투대상이될수있는시스템을식별하는 것이 목적이니까? 즉 침투대상이 되려면 방화벽의 유무까지 알면 좋음.
2. port scanning (중요) 🧡
: 침투 대상의 서비스 식별을 위해 포트 확인하는 스캐닝
전송된 데이터응답으로 port의 open,close 판단
2.1 UDP port scan
2.2 TCP port scan (주)
먼저, UDP 알아보기
2.1 UDP port scan
nmap -sU 192.168.50.220
open- 응답이 없음(프로그램에 따라 해당 port를 사용하는 서비스에 맞게 프로토콜과 데이터를 만들어 스캐닝 진행: 따라서 정상적인 응답이 온다)
다 아는 것은 아니고 well-known포트만 가능.
통신이 되는 것을 확인할 수 있다.
close - destination unreachable
UDP scanning은 속도가 많이 느리다
응답이 없다는 것은 정상적으로 port가 open이라서 응답이 없을 수도 있지만 방화벽이나 보안장비에 의해서 필터링되어 응답이 없을 수도 있으니까 주의해야 한다.
보면 5353은 응답이 없다.
200번에서 보내기만 하고 응답은 안 오는 것을 볼 수 있다.
+mdns가 무엇인가?
전체 이름 | Multicast DNS |
사용 포트 | UDP 5353번 |
주소 타입 | 224.0.0.251 (IPv4), ff02::fb (IPv6) |
사용 환경 | 로컬 네트워크 (인터넷X) |
예시 도메인 | raspberrypi.local, printer.local 등 |
주요 사용처 | 스마트홈 기기, AirPlay, Chromecast, Bonjour, IoT 등 |
DNS 서버 필요? | ❌ 없음 (서버 없이도 이름해결 가능) |
DNS | mDNS | |
목적 | 전 세계 도메인 이름 → IP 매핑 | 로컬 네트워크 이름 → IP 매핑 |
방식 | 서버-클라이언트 구조 | 분산형 멀티캐스트 방식 |
포트 | UDP 53 | UDP 5353 |
요청 대상 | DNS 서버 (예: 8.8.8.8) | 로컬 네트워크 전체 (멀티캐스트) |
예시 도메인 | google.com, naver.com | raspberrypi.local, printer.local |
누구나 서버와 클라이언트가 된다. 서버가 필요없음
2.2 TCP port scan
1. (•_•) tcp connect scanning
syn를 전송하면 정상적인 연결과정을 맺어서 port -> open or close 확인
nmap -sT 대상주소
open -> tcp session이 연결되는 port
close -> reset 이 날아옴

연결이 되면
단점: 연결과정에 로그가 남을 확률이 높다.
2. (❁´◡`❁) SYN Stealth Scanning (Half Open Scan)
syn을 전송해 연결과정을 진행하는데 다른 점은 연결과정을 마무리하지 않고 연결을 의도적으로 끊는다.
nmap -sS 192.168.50.50
하지만 연결과정에서
open -> syn-syn/ack-rst
close ->reset이 상대로 부터 날아옴
3. (●'◡'●) fin scanning
fin 데이터를 보내서 침투대상에서 전송하여 응답유무에 따라 port가 오픈인지 클로즈인지 식별한다.
nmap -sF 192.168.50.50
open -> 응답없음
close -> rst/ack 수신
IDS 를회피할수있는가능성이높아서 사용가능.
하지만 결과가 좀 불분명하다.
보면 FIN만 보낸다는 것을 알 수 있다.
정상적인 연결 요청에 의한 필터링이나 로그가 남는 것을 우회하기 위해 사용하는 기법
아무 응답이 없으면 방화벽인지 열려있는지 알 수가 없음
4. (☞゚ヮ゚)☞X-mas scanning
fin,psh,urg를 동시에 설정한 tcp 데이터를 전송해서 해당 포트의 open or close 식별
세개의 flag가 절대 같이 존재할 수 없음
말이 안되는 flag를 일부러 만들어서 정상적인 방화벽을 우회하는 방식
nmap -sX 192.168.50.50
open -> 응답 무시 없음
close -> rst을 수신
나오는 결과는 fin과 동일하다
오히려 탐지하기가 쉽다.
너무 비정상적인 데이터이다.
보면 50.200에서 보냈을 때
응답으로 rst가 오면 존재하지 않는 포트인 것을 알 수 있고,
보낼 때 fin,psh,urg로 보낸다.
5. ( •̀ ω •́ )✧null scanning
아무런 flag도 설정하지 않고 tcp 데이터를 전송하여 해당 port가 open or close인지 식별하는 포트 스캔
사실상 flag를 설정하지 않고 보내는 데이터는 없다. 하지만 이렇게 비정상적인 데이터를 만드는 이유는 이를 통해 포트를 스캔하기 위해서이다. 이를 통해 정상적인 연결요청에 의한 필터링이나 로그가 남는 것을 우회하기 위한 방법이다.
nmap -sN 대상주소
open -> 응답 없음
close -> rst 수신
결과가 바로 나온다.
보면 flag값이 0이다.
xp 결과
운영체제마다 결과값이 다르다
xp의 경우 x-mas, fin, null 스캐닝으로는 다 rst로 응답하여 결과가 없다. (열리있든 닫혀있든)
이걸로 운영체제를 알아낼 수 있기도 하지만 xp로 공격하려면 syn steal 이나 syn connect로 해야 한다.
그리고 udp공격도 먹히지 않는다.

6. (╹ڡ╹ )idel scanning
hping3 -r 192.168.50.150(좀비 windows pc)
hping3 -a 192.168.50.150(좀비인 척) 192.168.50.50(공격 대상) -p 443(공격할 포트) -S(syn로 보낸다)
특정 포트가 open 아니면 close인지 식별하기 위한 port scanning
해커가 좀비 pc(idel pc)를 이용해 타겟의 port가 어떤 상태인지를 간접적으로 확인하는 형태의 scan
1) 해커가 좀비pc에게 tcp null flag값이 설정된 데이터를 반복적으로 전송한다.(이때 전제조건으로 좀비 pc는 아무랑도 통신을 하고 있지 않아야 하고 (이런 상태= idel pc) windows시스템이어야 한다.)
4계층: tcp, udp
3계층: ip(무조건 99.99999%) or ARP
ip header
🧠 Basic Structure
Version (4 bits): Indicates the IP version (e.g., 4 for IPv4).
Header Length (4 bits): Specifies the length of the header in 32-bit words.
Type of Service (8 bits): Defines priority and quality of service (QoS) parameters.
Total Length (16 bits): Total size of the packet including header and data.
📦 Fragmentation Fields
Identification (16 bits): Unique ID for packet reassembly. (단편화데이터의 원본데이터 식별값)
Flags (3 bits): Controls fragmentation (e.g., DF = Don’t Fragment, MF = More Fragments).
Fragment Offset (13 bits): Position of this fragment in the original data.
⏳ Lifetime & Protocol
Time to Live (TTL, 8 bits): Limits packet lifespan to avoid infinite loops.
Protocol (8 bits): Indicates the next-level protocol (e.g., TCP = 6, UDP = 17).
🧮 Error Checking
Header Checksum (16 bits): Validates header integrity (not the data).
📍 Addressing
Source IP Address (32 bits): Sender’s IP.
Destination IP Address (32 bits): Receiver’s IP.
2)반복적인 tcp null flags값 전송 -> idel pc는 응답으로 반복적으로 tcp rst flags값 -> 그럼 아래를 참고하면 indentification(순서번호)는 1씩 증가해서 1번 응답 2번응답 3번 응답으로 답을 할 것이다.
ip header중에 identification값이 중요한데 단편화과정에서는 원본 데이터의 식별값이지만 원본 데이터의 순서번호 역할도 수행한다. 데이터를 송신하는 장비 입장에서 어떤 데이터를 어떤 순서로 전송했는지 파악하기 위한 순서번호
3) 해커는 정보 수집이 필요한 침투대상에게 포트가 열려있는지 확인하기 위해 패킷을 전송한다. tcp syn flag설정된 연결요청을 전송한다.
tcp: src port:random dst port: 목적지 포트 (예를 들면 80)
ip: src: 좀비 pc dst:침투대상 ip (즉 ip spoofing으로 좀비 pc인척해서 syn데이터를 보낸다)
4)해당 포트가 open이면, tcp ack/syn 응답 진행 -> src: 침투대상 dst: 좀비 pc -> 좀비pc는 rst응답
닫혀 있으면, tcp rst 응답 진행 -> src: 침투대상 dst: 좀비 pc -> 좀비 pc는 무시
5) 해커가 해당 좀비 pc를 모니터링하는데 id값이 비네? 그럼 그 포트는 열려있다는 뜻이다.
hping3 -r 192.168.50.150
hping3 -a 192.168.50.150 192.168.50.50 -p 443 -S
먼저 null값을 보내면서
공격 진행
443포트는 닫혀있으므로 +1씩 증가하는 것을 알 수있다.
열려있는 경우에는?
+1이 아니다
늘어나는 것을 알 수 있다.
여기서 왜 +1씩이 아니라 +3 +4씩 마음대로 증가하는 걸까?
먼저 윈도우가 rst를 보낼 때마다 +1씩 증가를 하는건데 서버에서 ack/syn를 보내니까 그거에 대한 응답으로 보내는 거겠지? 그렇다면 난 하나의 포트를 물었는데 왜 ack를 여러개 보낼까? 그건 그 포트가 다른 포트랑 연결되어있기 때문인 듯하다
테스트로 80번포트와 22번 포트가 연결된 서버로 공격을 진행했을 때 (http와 ftp를 연동해둠) 불규칙적으로 늘어났지만
80번포트만 존재하는 서버였을 때는 +1씩만 증가했다.
windows만 순서번호가 +2씩 증가 (규칙적)
리눅스의 경우에는 랜덤한 값을 순서번호로 저장하는 방식을 사용하기 때문에 idel pc로 사용할 수 없다.
'Hacking' 카테고리의 다른 글
Metasploit을 이용한 eternalblue 취약점 공격 (0) | 2025.07.25 |
---|---|
Metasploit 사용 (2) | 2025.07.11 |
경로추적 (4) | 2025.07.10 |
Footprinting - Domain 정보 수집 (0) | 2025.07.10 |
파일 다운로드&업로드 취약점 및 보안 (0) | 2025.07.09 |