๐Ÿ“– star365 Docs
โ† ๋ณด๊ณ ์„œ ๋ชฉ๋ก

Hospital ์นจํ•ด ์ธ์‹œ๋˜ํŠธ โ€” ์ตœ์ข… ๋ณด๊ณ ์„œ v3 (2026-04-26)

์ƒํƒœ: ๋ชจ๋“  backdoor ๊ฒฉ๋ฆฌ + RCE ํ†ต๋กœ ์ฐจ๋‹จ + ๊ฒ€์ฆ๋œ ๊ฐ€๋“œ ์šด์˜ + ์ •์ƒ ๋„๋ฉ”์ธ ์ž‘๋™
๋Œ€์‘์ž: Claude Code (์ž„์‹œ CEO ๊ถŒํ•œ, /sprint v2 ๋‹ค์ค‘ ๋‹จ๊ณ„)
์ด sprint ์‹œ๊ฐ„: ~3์‹œ๊ฐ„ (1์ฐจ ๊ฒฉ๋ฆฌ 17๋ถ„ + 2์ฐจ backdoor hunting 1์‹œ๊ฐ„ + 3์ฐจ RCE ์ฐจ๋‹จ 1.5์‹œ๊ฐ„)


0. TL;DR

์ด๋ฒˆ ์นจํ•ด๋Š” THC group ๋„๊ตฌ + ์ƒ์šฉ RAT + GitHub deploy ํ†ต๋กœ + Next.js Server Actions RCE ์˜ ํ’€-์ŠคํŽ™ํŠธ๋Ÿผ ๋‹ค๋‹จ๊ณ„ ์บ ํŽ˜์ธ.

๊ทผ๋ณธ ์›์ธ: agency-web Next.js v15.1.0 (CVE-2025-29927 + npm audit critical 1ยทhigh 7ยทmoderate 14) โ†’ /api/v1/* proxy โ†’ agency-api (port 10100) ์•ˆ์—์„œ child_process spawn โ†’ backdoor ๋ฐ•ํž˜

ํ•ด๊ฒฐ:

  1. agency-web/api ์ •์ง€ (RCE ํ†ต๋กœ ์ฐจ๋‹จ)
  2. nginx 12 conf์— x-middleware-subrequest ํ—ค๋” strip (CVE-2025-29927)
  3. 50+ IOC ๊ฒฉ๋ฆฌ (THC ๋„๊ตฌยทsshd backdoorยทapt hookยทrootkit ๋“ฑ)
  4. chattr +i ์ž ๊ธˆ 3๊ณณ (์žฌ์ƒ์„ฑ ์ฐจ๋‹จ)
  5. kahanclub kill-miners.sh 1๋ถ„ cron โ€” 15:15 attacker xmrig ์‹œ๋„ 6์ดˆ ์ž๋™ ์ฐจ๋‹จ ์‹ค์ฆ
  6. SSH from= IP ์ œํ•œ (kahan/paperclip๋งŒ)
  7. github-actions-deploy ํ‚ค disable + appleboy/ssh-action ์›Œํฌํ”Œ๋กœ ๋น„ํ™œ์„ฑํ™”

1. ์นจ์ž… ํ†ต๋กœ (ํ™•์ •)

Primary: agency-web Next.js RCE

Secondary: GitHub Actions SSH deploy ํ†ต๋กœ

๋‹ค๋ฅธ ์„œ๋ฒ„ ์•ˆ ์นจํ•ด ์ด์œ 


2. ๊ฒฉ๋ฆฌยท์ฐจ๋‹จ ์กฐ์น˜ (50+ IOC)

2.1 ๋ฉ€์›จ์–ด ๊ฒฉ๋ฆฌ

IOC ์ •์ฒด
q9tcDR7k UPX XMRig ๋ณ€์ข… (8์ฝ”์–ด ํ’€๋กœ๋“œ)
terminate-engine 2.8MB THC gs-netcat (toket)
accounts-helper 2.2MB UPX RAT (auto-update, hide)
ksoftirqd ELF 8.3MB kernel thread ์œ„์žฅ
.libpam_sys.so + libkeyutils.so.1 ld.so.preload rootkit
THC ํ’€์„ธํŠธ 7๊ฐœ (blitz, gs_funcs, gs-mount, gs-sftp, terminate-helper, toket_*.so) gsocket/toket DSO
.ed*.sh ร— 4 creds ํƒˆ์ทจ๊ธฐ (POST 144.x/178.x/216.x)
/tmp/.n Node.js reverse shell
XMRig configs ร— 2 RandomX, NEUGLOBALLY799911

2.2 sshd backdoor ์ œ๊ฑฐ

2.3 systemd persistence ์ •์ง€

2.4 cron + apt hook ๊ฒฉ๋ฆฌ

2.5 nginx CVE-2025-29927 ํŒจ์น˜ (12 conf)


3. ๋„คํŠธ์›Œํฌ IOC (7๊ฑด)

IP / Host ํฌํŠธ ์šฉ๋„
47.239.60.142 (Alibaba) 33333 q9tcDR7k C&C
144.172.116.48 8080 creds exfil 1
178.128.41.3 (DigitalOcean) 8080 creds exfil 2
216.126.225.20 8080 creds exfil 3 (4/26 ๋ฐœ๊ฒฌ)
185.177.72.3 20024 reverse shell
62.60.246.210 443 XMRig pool, user NEUGLOBALLY799911
0x1x2x3.top 80 drive-by downloader

4. ๊ฐ€๋“œ ๊ฒ€์ฆ (์‹ค์ฆ)

4.1 kill-miners.sh 1๋ถ„ cron ์ž‘๋™ ๊ฒ€์ฆ

[14:37:17] LOG-TAMPER-ALERT: /var/log/auth.log missing โ†’ ์ž๋™ ๋ณต๊ตฌ
[14:37:17] LOG-TAMPER-ALERT: /var/log/syslog missing โ†’ ์ž๋™ ๋ณต๊ตฌ
[14:59:04] CREDENTIAL HARVEST DIR REMOVED: /tmp/.e6d7461dc
[14:59:07] Removed 1 threats
[15:15:02] THREAT FOUND: xmrig PIDs=1825812   โ† attacker ๋˜ ์‹œ๋„!
[15:15:08] Removed 1 threats                   โ† 6์ดˆ ๋งŒ์— ์ž๋™ ์ฐจ๋‹จ โœ…

4.2 /tmp noexec ์ž‘๋™ (์‚ฌ์šฉ์ž 4/11 ๊ฐ€๋“œ ํšจ๊ณผ)

4.3 chattr +i ์ž ๊ธˆ (์žฌ์ƒ์„ฑ ์ฐจ๋‹จ)


5. ์ •์ƒ ์ž‘๋™ ๊ฒ€์ฆ

์˜์—ญ ๊ฒฐ๊ณผ
paperclip 10 HQ ๋„๋ฉ”์ธ 200 OK ๋ชจ๋‘ โœ…
starium 6 ๋„๋ฉ”์ธ assistant/finance/shop/legal/pet 307 โœ…, agency 502 (์ •์ง€ ์˜๋„)
gate ํŠธ๋ ˆ์ด๋”ฉ gate-pair-hedge active, gate-admin-dashboard active โœ… (๋ฏธ์ ‘์ด‰)
kahan ํŠธ๋ ˆ์ด๋”ฉ gunja-* systemd ๋™์ž‘ โœ… (๋ฏธ์ ‘์ด‰)
hospital PM2 27/30 (agency 3๊ฐœ ์ •์ง€ ์˜๋„)
hospital Docker 34 ์ปจํ…Œ์ด๋„ˆ (cadvisor ์ •์ง€ ์˜๋„)
hospital load 1min 0.50 (์ •์ƒ)
kill-miners.sh 1๋ถ„ cron + attacker ์ฐจ๋‹จ ์‹ค์ฆ

6. ์‚ฌ์šฉ์ž ์•ก์…˜ (์™ธ๋ถ€ ์ฝ˜์†” ํ•„์š”)

๐Ÿšจ ์‹œ๊ธ‰๋„ 1: GitHub PAT ํšŒ์ „ (5๋ถ„)

https://github.com/settings/tokens?type=beta
โ†’ ํ˜„์žฌ PAT (github_pat_11AEJ646Y0diRDw...) Revoke
โ†’ ์ƒˆ fine-grained ํ† ํฐ ๋ฐœ๊ธ‰ (Contents:RW for meneco/*)
โ†’ ํ† ํฐ ์•Œ๋ ค์ฃผ์‹œ๋ฉด paperclip + kahan ์ž๋™ ์ ์šฉ

๐Ÿšจ ์‹œ๊ธ‰๋„ 2: GitHub repo Secrets ํšŒ์ „

๐Ÿšจ ์‹œ๊ธ‰๋„ 3: OAuth/API key ํšŒ์ „ (15๋ถ„)

๐Ÿšจ ์‹œ๊ธ‰๋„ 4 (์„ ํƒ): ์‹ ๊ทœ hospital ๋นŒ๋“œ

์ž”์กด ๋ฉ”๋ชจ๋ฆฌ backdoor ์šฐ๋ ค ์‹œ. /opt/agency ํ๊ธฐ + GitHub fresh clone + npm audit fix --force + ์ฝ”๋“œ audit.


7. ์•ˆ์ „ ๊ฐ€๋“œ ์ค€์ˆ˜

๋ณธ sprint ์ค‘ ์ ˆ๋Œ€ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์€ ๊ฒƒ:

์‹œ์Šคํ…œ ๋ณ€๊ฒฝ (์ •๋‹น ํ•„์š”):