[SK shieldus Rookies 19기] 시스템/네트워크 보안 기술 4일차

기록하는짱구·2024년 3월 26일
0

SK Shieldus Rookies 19기

목록 보기
19/43
post-thumbnail

📌 방화벽(Firewall)

IP 주소와 Port 번호를 기반으로 필터링 정책(방화벽 룰 셋)에 따라 패킷 필터링을 수행하는 보안 장비

접근 제어(Access Control) / 패킷 필터링
NAT
액세스 기록 기능
사용자 인증
암호화 + 터널링

📖 방화벽 정책

📖 방화벽 한계

내부 네트워크에 존재하는 악의적인 공격은 막을 수 없음
방화벽을 경유하지 않는 공격을 막을 수 없음
방화벽에 방어 규칙에 포함되지 않는 공격을 막을 수 없음

데이터에 실려 있는 악성 코드나 바이러스를 막을 수 없음
→ 메일에 첨부된 악성 코드를 막을 수 없음

DoS와 DDoS 공격을 막을 수 없음
정상적인 서비스 포트를 이용한 공격이기 때문

📖 iptables

Iptables is a powerful Linux utility that allows system administrators to configure the kernel’s built-in firewall.

# iptables COMMAND <chain> -p <protocol> -s <source> -d <destination> -j <actioN>
           ~~~~~~~ ~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ 
            |       |      프로토콜        출발지 IP   목적지 IP         조건(chain, protocol, source, dest)을 만족하는
            |       |                                                 패킷의 처리 방법  
            |       +-- 관련된 규칙(rule)의 모음                        ACCEPT : 트래픽을 허용
            |           INPUT   : imcoming traffic                    DROP   : 트래픽을 차단
            |           OUTPUT  : outgoing traffic
            |           FORWARD : 다른 네트워크로 라우팅되는 트래픽
            |
            +-- -A : 규칙 추가
                -L : 규칙 조회
                -D : 규칙 삭제
                
# iptables-save 	: 규칙을 파일로 저장
# iptables-restore 	: 규칙 파일을 규칙에 적용

💻 규칙 조회

$ sudo iptables -L    
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  kali.linux           anywhere             tcp flags:RST/RST


$ sudo iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  368 15164 DROP       tcp  --  any    any     kali.linux           anywhere             tcp flags:RST/RST

💻 규칙 추가

┌──(kali㉿kali)-[~]
└─$ sudo iptables -A OUTPUT -d "192.168.40.130" -j DROP
                                                                                                                                 
┌──(kali㉿kali)-[~]
└─$ curl http://bee.box    				→ bee.box로 접속되지 않는 것을 확인


# iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
                       ~~~~~~~~~~~~~~
                       특정 네트워크 ID로부터 온 패킷을 허용 

# iptables -A INPUT 2 -s 192.168.1.0/24 -j ACCEPT
                    ~
                    인바운드 두번째 규칙으로 추가  

# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
                    ~~~~~~~~~~~~~~~~~
                    TCP 프로토콜의 22번 포트(SSH)의 접속을 허용 

💻 규칙 삭제

┌──(kali㉿kali)-[~]
└─$ sudo iptables -L                                   
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  kali.linux           anywhere             tcp flags:RST/RST
DROP       all  --  anywhere             bee.box           


┌──(kali㉿kali)-[~]
└─$ sudo iptables -D OUTPUT 2		     → 삭제할 체인과 규칙 번호 입력


┌──(kali㉿kali)-[~]
└─$ sudo iptables -L         
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  kali.linux           anywhere             tcp flags:RST/RST

💻 규칙을 파일로 저장 및 복원

┌──(kali㉿kali)-[~]
└─$ sudo iptables-save > ./iptables.rules
                                                                                                                                 
┌──(kali㉿kali)-[~]
└─$ cat ./iptables.rules
# Generated by iptables-save v1.8.9 (nf_tables) on Mon Mar 25 20:44:19 2024
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -s 192.168.40.129/32 -p tcp -m tcp --tcp-flags RST RST -j DROP
COMMIT
# Completed on Mon Mar 25 20:44:19 2024


┌──(kali㉿kali)-[~]
└─$ sudo iptables-restore < ./iptables.rules 

📌 WireShark 다운로드 및 설치

kali 가상머신에서 진행해도 무관
https://drive.google.com/file/d/1_5ayAtNWDMQLg9jsKJLEJoTLKZfqooa4/view?usp=drive_link

📖 캡처 필터(capture filter)

패킷이 캡쳐될 때 지정
지정된 표현식에 포함/제외된 패킷만 캡처

💻 시작 화면의 Capture 란에서 설정 가능

💻 캡처 옵션 창에서 설정 가능

💻 주소 기반의 트래픽 수집

1. 특정 IP 주소에서 오는 또는 주소로 가는 트래픽 수집

host 10.3.1.1
not host 10.3.1.1
src host 10.3.1.1
dst host 10.3.1.1
host 10.3.1.1 or host 10.3.1.2
host www.test.com

2. IP 주소 범위에서 오거나 또는 범위로 가는 트래픽 수집

net 10.3.0.0/16
net 10.3.0.0 mask 255.255.0.0
ipv6 net 2406:da00:ff00::/64
src net 10.3.0.0/16
dst net 10.3.0.0/16
not dst net 10.3.0.0/16

3. 브로드캐스트 또는 멀티캐스트 트래픽 수집

ip broadcast
ip multicast

4. MAC 주소 기반의 트래픽 수집

ether host AA:BB:CC:DD:EE:FF
ether src AA:BB:CC:DD:EE:FF
ether dst AA:BB:CC:DD:EE:FF
not ether host AA:BB:CC:DD:EE:FF

5. 특정 애플리케이션에 대한 트래픽 수집

port 53
not port 53
port 80
udp port 67
tcp port 21
portrange 1-80
tcp portrange 1-80
port 20 or port 21
host 10.3.1.1 and port 80
host 10.3.1.1 and not port 80
udp src port 68 and udp dst port 67	⇐ udp 68 에서 udp 67 로 가는 트래픽

📖 디스플레이 필터(display filter)

원하지 않는 패킷을 숨김
지정된 표현식을 기반으로 원하는 패킷만 보기

🔍 연산자

연산자영어 표기
==eqip.src == 10.2.2.2
!=netcp.srcport != 80
>gtframe.time_relavive > 1
<lttcp.window_size < 1400
>=gedns.count.answers >= 10
<=leip.ttl <= 10
containshttp container "GET"

1. 단순 IP 주소의 호스트에서 또는 호스트로 전달된 트래픽 필터링

ip.addr == 10.3.1.1
!ip.addr == 10.3.1.1
ip.src == 10.3.1.1
ip.dst == 10.3.1.1
ip.host == www.test.com

2. 주소 범위에서 또는 범위로 전달된 트래픽 필터링

ip.addr > 10.3.0.1 && ip.addr < 10.3.0.5
(ip.addr >= 10.3.0.1 && ip.addr <= 10.3.0.6) && !ip.addr == 10.3.0.3

	→ 10.3.0.1 ~ 10.3.0.6 범위의 트래픽 중 10.3.0.3 을 제외한 트래픽 

3. IP 서브넷에서 또는 서브넷으로 전달된 트래픽 필터링

ip.addr == 10.3.0.0/16
ip.addr == 10.3.0.0/16 && !ip.addr = 10.3.0.3
!ip.addr == 10.3.0.0/16 && !ip.addr = 10.2.0.0/16

🔍 캡처 필터 vs 디스플레이 필터

캡처 필터디스플레이 필터
host 172.16.1.1ip.host == 172.16.1.1
src host 172.16.1.1ip.src == 172.16.1.1
dst host 172.16.1.1ip.dst == 172.16.1.1
port 8080tcp.port == 8080
!port 8080tcp.port != 8080

📖 Conversation Filter

관심 있는 데이터를 빠르게 분석 가능

📌 실습

kali 가상머신에서 wireshark를 실행하고 bee.box (접속 후 로그인), google.com, naver.com으로 접속하고나서 패킷 캡처를 종료한 후

⑴ bee.box로 연결 요청한 트래픽(SYN 플래그가 설정된 트래픽)을 확인하는 필터

⑵ bee.box 사이트로 POST 요청한 트래픽을 확인하는 필터

⑶ bee.box 사이트로 로그인할 때 사용한 요청 파라미터 정보를 확인

⚙ Name Resolution 설정

1. bee.box로 연결 요청한 트래픽(SYN 플래그가 설정된 트래픽)을 확인하는 필터

⑴ TCP SYN 플래그가 설정된 트래픽을 필터링
→ SYN 트래픽과 SYN, ACK 트래픽이 함께 출력

⑵ TCP SYN 플래그는 설정되어 있고, ACK 플래그는 설정되지 않은 트래픽을 필터링

⑶ tcp 플래그 확인
Analyze > Apply as Filter > Selected 클릭

⑷ tcp.flags.str 필터 항목을 이용해 ⑵와 동일 결과가 필터링 되도록 수정하고 동시에 &&로 호스트 명이 bee.box인 트래픽으로 제한하도록 필터링

2. bee.box 사이트로 POST 요청한 트래픽을 확인하는 필터

3. bee.box 사이트로 로그인할 때 사용한 요청 파라미터 정보 확인

왼쪽 하단의 패킷 디테일 창에서 확인

Follow HTTP Stream한 결과에서 확인
Analyze > Follow > HTTP Stream 클릭

📌 TCPdump TShark

CLI 기반 패킷 수집·분석 도구

$ tshark -h
TShark (Wireshark) 4.2.0 (Git v4.2.0 packaged as 4.2.0-1)
Dump and analyze network traffic.
See https://www.wireshark.org for more information.

Usage: tshark [options] ...

Capture interface:
  -i <interface>, --interface <interface>
                           name or idx of interface (def: first non-loopback)
  -f <capture filter>      packet filter in libpcap filter syntax
  -s <snaplen>, --snapshot-length <snaplen>
                           packet snapshot length (def: appropriate maximum)
  -p, --no-promiscuous-mode
                           don't capture in promiscuous mode
  -I, --monitor-mode       capture in monitor mode, if available
  -B <buffer size>, --buffer-size <buffer size>
                           size of kernel buffer (def: 2MB)
	... 생략 ...





$ tshark -D
1. eth0
2. any
3. lo (Loopback)
4. bluetooth0
5. bluetooth-monitor
6. nflog
7. nfqueue
8. dbus-system
9. dbus-session
10. ciscodump (Cisco remote capture)
11. dpauxmon (DisplayPort AUX channel monitor capture)
12. randpkt (Random packet generator)
13. sdjournal (systemd Journal Export)
14. sshdump (SSH remote capture)
15. udpdump (UDP Listener remote capture)
16. wifidump (Wi-Fi remote capture)




$ tshark -i 1				# 1번 NIC의 트래픽을 캡쳐 
Capturing on 'eth0'
    1 0.000000000   kali.linux → bee.box      TCP 74 50962 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM TSval=495650891 TSecr=0 WS=128
    2 0.001559399      bee.box → Broadcast    ARP 60 Who has 192.168.40.129? Tell 192.168.40.130
    3 0.001579685   kali.linux → bee.box      ARP 42 192.168.40.129 is at 00:0c:29:ca:54:d8
    4 0.001700100      bee.box → kali.linux   TCP 74 80 → 50962 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 SACK_PERM TSval=71649699 TSecr=495650891 WS=64
    5 0.001740862   kali.linux → bee.box      TCP 66 50962 → 80 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=495650892 TSecr=71649699
    6 0.002120977   kali.linux → bee.box      HTTP 572 GET /bWAPP/login.php HTTP/1.1 
    7 0.002282784      bee.box → kali.linux   TCP 66 80 → 50962 [ACK] Seq=1 Ack=507 Win=6912 Len=0 TSval=71649700 TSecr=495650893
    8 0.003608975      bee.box → kali.linux   TCP 2962 HTTP/1.1 200 OK  [TCP segment of a reassembled PDU]
    9 0.003656759   kali.linux → bee.box      TCP 66 50962 → 80 [ACK] Seq=507 Ack=2897 Win=63488 Len=0 TSval=495650894 TSecr=71649700
   10 0.003815021      bee.box → kali.linux   HTTP 1604 HTTP/1.1 200 OK  (text/html)
  





$ tshark -i 1 -w tshark.pcapng		# 캡쳐한 트래픽을 파일에 저장
Capturing on 'eth0'
52 ^C





$ tshark -r tshark.pcapng     		# 캡쳐 파일의 내용 확인
    1 0.000000000   kali.linux → bee.box      TCP 74 57766 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM TSval=495875753 TSecr=0 WS=128
    2 0.000249041      bee.box → kali.linux   TCP 74 80 → 57766 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 SACK_PERM TSval=71705918 TSecr=495875753 WS=64
    3 0.000290779   kali.linux → bee.box      TCP 66 57766 → 80 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=495875753 TSecr=71705918
    4 0.002774296   kali.linux → bee.box      HTTP 572 GET /bWAPP/login.php HTTP/1.1 
    5 0.003096659      bee.box → kali.linux   TCP 66 80 → 57766 [ACK] Seq=1 Ack=507 Win=6912 Len=0 TSval=71705919 TSecr=495875756
    6 0.004841479      bee.box → kali.linux   HTTP 4500 HTTP/1.1 200 OK  (text/html)
    7 0.004979293   kali.linux → bee.box      TCP 66 57766 → 80 [ACK] Seq=507 Ack=4436 Win=62080 Len=0 TSval=495875758 TSecr=71705919
    8 0.009162178   kali.linux → bee.box      TCP 66 57766 → 80 [FIN, ACK] Seq=507 Ack=4436 Win=64128 Len=0 TSval=495875762 TSecr=71705919
    9 0.009477852      bee.box → kali.linux   TCP 66 80 → 57766 [ACK] Seq=4436 Ack=508 Win=6912 Len=0 TSval=71705920 TSecr=495875762




$ tshark -i 1 -a files:3 -b duration:10 -w tshark_files.pcapng
              ~~~~~~~~~~ ~~~~~~~~~~~~~~ 
              |           |
              |           +-- 10초 후 다음 파일을 생성 
              +-- 3개 파일 수집 후 자동 정지
Capturing on 'eth0'
1928 




$ ls -l tshark_files*
-rw------- 1 kali kali  170304 Mar 26 01:57 tshark_files_00001_20240326015704.pcapng
-rw------- 1 kali kali 2188976 Mar 26 01:57 tshark_files_00002_20240326015714.pcapng
-rw------- 1 kali kali 1610200 Mar 26 01:57 tshark_files_00003_20240326015724.pcapng
                                                                           ~~ 10초 간격으로 생성된 것을 확인





$ tshark -i 1 -f "tcp port 443" -w tshark_tcp_port_443.pcapng 
Capturing on 'eth0'
693 ^C
                                                                              
                                                                              
                                                                              
$ ls -l tshark_tcp_port_443.pcapng 
-rw------- 1 kali kali 1647544 Mar 26 02:01 tshark_tcp_port_443.pcapng




$ tshark -i 1 -f "tcp port 443 and host 192.168.40.1" -w tshark_tcp_port_443.pcapng 
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          # 패킷 필터 




$ tshark -r tshark.pcapng -Y "http.request.method == GET"
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                               # 디스플레이 필터       
    4 0.002774296   kali.linux → bee.box      HTTP 572 GET /bWAPP/login.php HTTP/1.1 




$ tshark -i 1 -qz hosts             # 접속한 호스트 목록 확인
Capturing on 'eth0'
^C1140 packets captured
# TShark hosts output
#
# Host data gathered from the temporary capture file

61.247.194.89   s1.e.navercdn.com
192.168.40.129  kali.linux
61.247.194.151  s2.e.navercdn.com
142.250.76.130  adservice.google.com
183.111.26.166  ntm.pstatic.net.static.gscdn.net
61.247.194.143  s2.e.navercdn.com
110.93.154.77   shopsquare.naver.com.nheos.com
117.52.137.162  lcs.naver.com.nheos.com
61.247.194.92   s1.e.navercdn.com
61.247.194.154  s2.e.navercdn.com



$ tshark -r tshark.pcapng -qz hosts                           
# TShark hosts output
#
# Host data gathered from tshark.pcapng

192.168.40.129  kali.linux
192.168.40.130  bee.box

📌 포트 스캐닝

실제 공격 방법을 결정하거나 공격에 이용될 수 있는 네트워크 구조, 시스템이 제공하는 서비스 등의 정보를 얻기 위해 수행되는 방법

제공 서비스 종류
시스템 운영체제의 커널 버전의 종류
시스템 플랫폼 형태
우회 가능 네트워크 구조
공격 대상 보안 장비 사용 현황

📖 nmap (network mapper)

운영체제 종류 및 사용 서비스에 대한 정보 스캔 도구

            Port Scan 
                |
   +------------+------------+ 
   |                         | 
Open Scan              Stealth Scan    
   |                         |
   +-- TCP Scan              +-- FIN Scan
   +-- UDP Scan              +-- XMAX Scan
                             +-- NULL Scan 

📖 TCP Full Open Scan

✍ Target 서버에 해당 포트가 열려 있는 경우

Attacker               Target   $ nmap -sT TARGET_IP [ -p 포트번호 ] 
            SYN
  ---------------------->		- 포트가 열려 있는 경우 SYN/ACK 패킷 수신
          SYN/ACK 				- SYN/ACK에 ACK 패킷을 전송함으로써 연결 완료
  <----------------------		- 스캔하고자 하는 포트에 접속을 시도해 완전한
								  TCP 연결을 맺어 신뢰성 있는 결과를 얻음
            ACK			
  ---------------------->	    - 속도가 느리고 로그를 남기므로
 								  탐지가 가능하다는 단점이 있음

✍ Target 서버에 해당 포트가 닫혀 있는 경우

Attacker                 Target		
            SYN
   ---------------------->			
          RST/ACK 				
   <----------------------	

✍ Target 서버에 차단정책으로 차단되어 있는 경우

Attacker                 Target		
            SYN
   ---------------------->	
$ nmap -sT bee.box

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-26 02:57 EDT
Nmap scan report for bee.box (192.168.40.130)
Host is up (0.0025s latency).
Not shown: 983 closed tcp ports (conn-refused)
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
25/tcp   open  smtp
80/tcp   open  http
139/tcp  open  netbios-ssn
443/tcp  open  https
445/tcp  open  microsoft-ds
512/tcp  open  exec
513/tcp  open  login
514/tcp  open  shell
666/tcp  open  doom
3306/tcp open  mysql
5901/tcp open  vnc-1
6001/tcp open  X11:1
8080/tcp open  http-proxy
8443/tcp open  https-alt
9080/tcp open  glrpc

Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds

❌ 닫혀 있는 포트인 경우

⭕ 열려 있는 포트인 경우

💻 bee.box 가상머신에 8080 포트로 연결(SYN) 요청이 들어오면 해당 패킷을 DROP하도록 iptables에 추가

bee@bee-box:~$ sudo iptables -A INPUT -p tcp --tcp-flags SYN SYN --dport 8080 -j DROP
bee@bee-box:~$ sudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  anywhere             anywhere            tcp dpt:webcache flags:SYN/SYN 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination     

💻 kali 가상머신에서 bee.box 가상머신으로 포트 스캔

$ nmap -sT bee.box

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-26 03:14 EDT
Nmap scan report for bee.box (192.168.40.130)
Host is up (0.00053s latency).
Not shown: 983 closed tcp ports (conn-refused)
PORT     STATE    SERVICE
21/tcp   open     ftp
22/tcp   open     ssh
25/tcp   open     smtp
80/tcp   open     http
139/tcp  open     netbios-ssn
443/tcp  open     https
445/tcp  open     microsoft-ds
512/tcp  open     exec
513/tcp  open     login
514/tcp  open     shell
666/tcp  open     doom
3306/tcp open     mysql
5901/tcp open     vnc-1
6001/tcp open     X11:1

8080/tcp filtered http-proxy

8443/tcp open     https-alt
9080/tcp open     glrpc

Nmap done: 1 IP address (1 host up) scanned in 1.31 seconds

📖 TCP Half Open Scan

✍ Target 서버에 해당 포트가 열려 있는 경우

Attacker                 Target		  $ nmap -sS TARGET_IP [ -p 포트번호 ] 
            SYN
   ---------------------->			- 세션에 대한 로그가 남는 
   									  TCP Full Open Scan을 보완하기 위한 기법
         				  		    - 공격 대상으로부터 SYN/ACK 패킷을 받으면
          SYN/ACK					  공격자는 RST 패킷을 보내서 연결을 끊음
   <----------------------	
            RST				        - 세션을 완전히 연결하지 않음
   ---------------------->			- 로그가 남지 않아 추적이 불가능하게 만듦

✍ Target 서버에 해당 포트가 닫혀 있는 경우

Attacker                 Target		
            SYN
   ---------------------->			
          RST/ACK 				
   <----------------------

✍ Target 서버에 차단정책으로 차단되어 있는 경우

Attacker                 Target		
            SYN
   ---------------------->

💻 kali 가상머신에서 bee.box 가상머신으로 포트 스캐닝

$ sudo nmap -sS bee.box

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-26 03:44 EDT
Nmap scan report for bee.box (192.168.40.130)
Host is up (0.010s latency).
Not shown: 983 closed tcp ports (reset)
PORT     STATE    SERVICE
21/tcp   open     ftp
22/tcp   open     ssh
25/tcp   open     smtp
80/tcp   open     http
139/tcp  open     netbios-ssn
443/tcp  open     https
445/tcp  open     microsoft-ds
512/tcp  open     exec
513/tcp  open     login
514/tcp  open     shell
666/tcp  open     doom
3306/tcp open     mysql
5901/tcp open     vnc-1
6001/tcp open     X11:1
8080/tcp filtered http-proxy
8443/tcp open     https-alt
9080/tcp open     glrpc
MAC Address: 00:0C:29:3E:BA:70 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 1.45 seconds

⭕ 열려 있는 포트

❌ 닫혀 있는 포트

🚫 필터링 된 포트

📌 Stealth Scan

3 Way Handshaking 연결 기법을 이용하지 않는 것

TCP 헤더를 조작해서 특수한 형태의 패킷을 만들어 스캔 대상의 시스템에 보내, 그 응답으로 포트 활성화 여부를 알아내는 기법
세션을 성립하지 않고 공격 대상 시스템 포트 활성화 여부를 알아내기 때문에 공격 대상 시스템에 로그를 남기지 않음

공격 대상의 시스템 관리는 어떤 IP를 가진 공격자가 시스템을 스캔했는지 확인할 수 없음

📖 FIN Scan

✍ Target 서버에 해당 포트가 열려 있는 경우

Attacker                 Target		  $ nmap -sF TARGET_IP [ -p 포트번호 ] 
            FIN
   ---------------------->			  - TCP 헤더에 FIN 플래그를 설정해서
   								   		공격 대상에게 메시지를 전송
									  - 포트가 열려 있는 경우, 응답이 없음

✍ Target 서버에 해당 포트가 닫혀 있는 경우

Attacker                 Target		
            FIN
   ---------------------->			
          RST/ACK 				
   <----------------------			

✍ Target 서버에 차단정책으로 차단되어 있는 경우

Attacker                 Target		
            FIN
   ---------------------->

💻 FIN 스캔 실습

$ sudo nmap -sF bee.box
[sudo] password for kali: 

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-26 04:00 EDT
Nmap scan report for bee.box (192.168.40.130)
Host is up (0.00043s latency).
Not shown: 983 closed tcp ports (reset)
PORT     STATE         SERVICE
21/tcp   open|filtered ftp
22/tcp   open|filtered ssh
25/tcp   open|filtered smtp
80/tcp   open|filtered http
139/tcp  open|filtered netbios-ssn
443/tcp  open|filtered https
445/tcp  open|filtered microsoft-ds
512/tcp  open|filtered exec
513/tcp  open|filtered login
514/tcp  open|filtered shell
666/tcp  open|filtered doom
3306/tcp open|filtered mysql
5901/tcp open|filtered vnc-1
6001/tcp open|filtered X11:1
8080/tcp open|filtered http-proxy
8443/tcp open|filtered https-alt
9080/tcp open|filtered glrpc
MAC Address: 00:0C:29:3E:BA:70 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 1.47 seconds

✍ 열린 포트

✍ 차단된 포트

✍ 닫힌 포트

📖 Xmas Scan

✍ Target 서버에 해당 포트가 열려 있는 경우

Attacker                 Target		  $ nmap -sX TARGET_IP [ -p 포트번호 ] 
         UGR,PSH,FIN
   ---------------------->			  - TCP 헤더에 UGR, PSH, FIN 플래그를
   								   	    동시에 설정해서 전송
						 			  - 포트가 열려 있는 경우, 응답이 없음

✍ Target 서버에 해당 포트가 닫혀 있는 경우

Attacker                 Target		
         UGR,PSH,FIN
   ---------------------->			
          RST/ACK 				
   <----------------------

✍ Target 서버에 차단정책으로 차단되어 있는 경우

Attacker                 Target		
         UGR,PSH,FIN
   ---------------------->	

💻 XMAS 스캔 실습

$ sudo nmap -sX bee.box

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-26 04:02 EDT
Nmap scan report for bee.box (192.168.40.130)
Host is up (0.017s latency).
Not shown: 983 closed tcp ports (reset)
PORT     STATE         SERVICE
21/tcp   open|filtered ftp
22/tcp   open|filtered ssh
25/tcp   open|filtered smtp
80/tcp   open|filtered http
139/tcp  open|filtered netbios-ssn
443/tcp  open|filtered https
445/tcp  open|filtered microsoft-ds
512/tcp  open|filtered exec
513/tcp  open|filtered login
514/tcp  open|filtered shell
666/tcp  open|filtered doom
3306/tcp open|filtered mysql
5901/tcp open|filtered vnc-1
6001/tcp open|filtered X11:1
8080/tcp open|filtered http-proxy
8443/tcp open|filtered https-alt
9080/tcp open|filtered glrpc
MAC Address: 00:0C:29:3E:BA:70 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 1.48 seconds

✍ 열린 포트

✍ 닫힌 포트

✍ 차단된 포트

📖 Null Scan

✍ Target 서버에 해당 포트가 열려 있는 경우

Attacker                 Target		  $ nmap -sN TARGET_IP [ -p 포트번호 ] 
             null
   ---------------------->			  - TCP 헤더에 플래그 설정 없이 전송
   									  - 포트가 열려 있는 경우, 응답이 없음

✍ Target 서버에 해당 포트가 닫혀 있는 경우

Attacker                 Target		
             null
   ---------------------->			
          RST/ACK 				
   <----------------------

✍ Target 서버에 차단정책으로 차단되어 있는 경우

Attacker                 Target		
             null
   ---------------------->

💻 NULL 스캔 실습

$ sudo nmap -sN bee.box

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-26 04:08 EDT
Nmap scan report for bee.box (192.168.40.130)
Host is up (0.010s latency).
Not shown: 983 closed tcp ports (reset)
PORT     STATE         SERVICE
21/tcp   open|filtered ftp
22/tcp   open|filtered ssh
25/tcp   open|filtered smtp
80/tcp   open|filtered http
139/tcp  open|filtered netbios-ssn
443/tcp  open|filtered https
445/tcp  open|filtered microsoft-ds
512/tcp  open|filtered exec
513/tcp  open|filtered login
514/tcp  open|filtered shell
666/tcp  open|filtered doom
3306/tcp open|filtered mysql
5901/tcp open|filtered vnc-1
6001/tcp open|filtered X11:1
8080/tcp open|filtered http-proxy
8443/tcp open|filtered https-alt
9080/tcp open|filtered glrpc
MAC Address: 00:0C:29:3E:BA:70 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 1.46 seconds

✍ 열린 포트

✍ 닫힌 포트

✍ 차단된 포트

다음 패킷 내용을 보고 진행 중으로 예상되는 공격 방법과 그에 대한 판단 근거를 설명하시오.

📖 UDP Scan

UDP는 3-Way Handshaking과 같은 절차가 없음

UDP 패킷을 전송 시 열려 있는 포트로부터 특정 UDP 응답값으로 수신
수신측의 포트가 닫혀 있는 경우 ICMP Port Unreachable 에러 메시지를 통해 포트 활성 유무를 확인

namp -sU [대상서버IP]

✍ 열린 포트인 경우

Attacker                 Target		
             UDP
   ---------------------->			
             UDP 				
   <----------------------	

✍ 닫힌 포트인 경우

Attacker                 Target		
             UDP
   ---------------------->			
       ICMP Unreachable
   <----------------------	

✍ 차단된 포트인 경우

Attacker                 Target		
             UDP
   ---------------------->

0개의 댓글