Hospital Security Harden โ 3-Track Sprint Report
Sprint: hospital-security-harden-tracks-20260501
Date: 2026-05-01 KST 08:05 ~ 08:25 (~20min)
Owner: Claude (์์ CEO ๊ถํ)
Result: 9/9 task PASS + 1 ๋ถ์ ๋ฐ๊ฒฌ (gate ํ์ฑ ์นจ์
, ๋ณ๋ sprint ํ์)
1. ๋ฐฐ๊ฒฝ
hospital-xmrig-eradicate-20260501 sprint ํ๊ณ ์์ ์๋ณํ 3 ์์ฌ ํญ๋ชฉ์ ๋จ์ผ sprint 3 ํธ๋์ผ๋ก ๋ณ๋ ฌ ์ฒ๋ฆฌ.
2. T1 โ ๋ณ์กฐ ๊ฐ์ง ๊ฐ๋ ๋ณด๊ฐ (auditd/inotify)
๋ณ๊ฒฝ
- inotify-tools ์ค์น (auditd ๋์ โ ๊ฒฝ๋, systemd-friendly)
/usr/local/bin/hospital-tamper-watch.sh (์ ๊ท)
- 11 path watch:
/etc/ld.so.preload /etc/cron.d /etc/systemd/system /etc/passwd /etc/shadow /etc/sudoers /etc/sudoers.d /etc/ssh/sshd_config /root/.ssh/authorized_keys /opt/scripts/kill-miners.sh /usr/local/bin/anti-miner-guard.sh
- events: modify, attrib, create, delete, move, move_self, delete_self
- throttle: ๊ฐ์ path:event 60์ด ์ค๋ณต ์ฐจ๋จ
/etc/systemd/system/hospital-tamper-watch.service (์ ๊ท, Type=simple, Restart=on-failure RestartSec=30)
๊ฒ์ฆ
- service
active (running) โ Main PID 2850028
- TAMPER CREATE/ATTRIB/DELETE 3๊ฑด ๊ฐ์ง โ
- mco-bot
{"success":true} ร 3๊ฑด ์๋ต โ
๊ฒฐํจ ๋ฐ๊ฒฌ + ์ ์
- 1์ฐจ ์ค๊ณ:
hospital โ paperclip(139.180.195.48):22 SSH โ paperclip SSH refused (port 22 closed ๋๋ ์ธ๋ถ ์ฐจ๋จ)
- 2์ฐจ ์ ์ :
hospital โ kahan(66.42.42.24):7405 SSH ์ง์ โ kahan localhost mco-bot ํธ์ถ
- ์ ์ ํ ์๋ฆผ ์ ์ก PASS
3. T2 โ 4์๋ฒ cron ํต์ผ
์ง๋จ
| ์๋ฒ |
cron entry (์ ) |
์ํ |
| kahan |
*/5 * * * * root /opt/scripts/kill-miners.sh |
โ
ํ์ค |
| kahanclub |
*/5 * * * * /usr/local/bin/anti-miner-guard |
โ ๋นํ์ค (root ๋๋ฝ + ๋ค๋ฅธ binary) |
| gate |
*/5 * * * * root /opt/scripts/kill-miners.sh |
โ
ํ์ค |
| stage8 |
*/5 * * * * root /opt/scripts/kill-miners.sh |
โ
ํ์ค |
| hospital |
*/5 * * * * root /opt/scripts/kill-miners.sh; hospital-guard-alert.sh |
โ
ํ์ค + alert |
๋ณ๊ฒฝ (kahanclub๋ง)
/etc/cron.d/anti-miner-guard ํ์คํ
- ๋ฐฑ์
:
.bak-pre-unify-20260501
- ์ entry:
*/5 * * * * root /opt/scripts/kill-miners.sh
- ๊ธฐ์กด
/usr/local/bin/anti-miner-guard binary ๋ณด์กด (๋ค๋ฅธ ๊ฒฝ๋ก์์ ํธ์ถ ๊ฐ๋ฅ)
๊ฒ์ฆ
- journalctl: kahan 23:05/23:10 UTC
CRON (root) CMD (/opt/scripts/kill-miners.sh) ์ค ์คํ โ
- hospital 23:10 UTC anti-miner.service + cron ์์ชฝ ์ ์ โ
- gate/stage8/kahanclub miner-scan.log mtime ๊ฐฑ์ โ
4. T3 โ mco-bot Telegram endpoint ์ ์
์ง๋จ
- mco-bot์
/api/* prefix routes ์ฌ์ฉ
- ์ค Telegram ์ก์ endpoint:
POST /api/blog with {"message": "..."} body
sendToBlog(message) ํธ์ถ โ Telegram bot API
- ์ด์ sprint์
POST /notify 404 ์์ธ ํ์ : endpoint๊ฐ ์กด์ฌํ์ง ์์์
๋ณ๊ฒฝ
/opt/star365-hq/scripts/notify-mco-bot.sh (์ ๊ท helper)
- ์ฌ์ฉ:
notify-mco-bot.sh <tag> <message> ๋๋ stdin pipe
- ํ๋ฆ: paperclip โ ssh kahan(7405) โ curl localhost:4001/api/blog
- JSON escape ์๋ (jq ๋๋ python3)
/opt/star365-hq/scripts/verify-xmrig-cycle-20260501.sh ์ ์
- ๊ธฐ์กด
/broadcast ํธ์ถ โ ์ helper ํธ์ถ๋ก ๊ต์ฒด
๊ฒ์ฆ
- 1ํ ์ค ์ก์ :
OK: {"success":true} โ
- verify-xmrig-cycle.sh syntax OK โ
5. ๋ถ์ ๋ฐ๊ฒฌ (๋ณ๋ sprint ๊ถ๊ณ )
๐จ gate ์๋ฒ ํ์ฑ ์นจ์
์งํ ์ค
| ์๊ฐ (KST) |
์ํ |
| 08:00 |
moneroร2 / sysslsร2 / javaeร2 (8 threats) |
| 08:05 |
xmrigร2 / moneroร2 / sysslsร2 / javaeร2 / cryptonightร2 / randomxร2 / nullbyteร2 / card0-crtc (15 threats) |
| 08:10 |
javae / nullbyte / kaluad (3 threats) |
- ๋งค 5๋ถ boundary๋ง๋ค ์ spawn = dropper ๋ณธ์ฒด ๋ฏธ์ ๊ฑฐ๋ ๋ฌดํ spawn cycle
/root/.incident_auto/ ๋น์ด์์ (forensic ์บก์ฒ ์๋ ๋ฏธํ์ธ)
- gate = Gate.io ํธ๋ ์ด๋ฉ ์๋ฒ: gate-pair-hedge / gate-admin-dashboard / v7-self-evolve.timer ํ์ฑ. ์นจ์
์ ์์ตํ ๊ฐ๋ฅ.
- ์ฆ๊ฐ ๋ณ๋ sprint ๊ถ๊ณ (์ด๋ฒ sprint scope ๋ฐ)
6. ์์ ๊ฒ์ฆ
| ์์ ๋ฃฐ |
๊ฒฐ๊ณผ |
| ํธ๋ ์ด๋ฉ ๋ฌด์ค๋จ |
โ
gunjaร3 + gateร2 active ์ ์ง |
| UFW ๋ฌด๋ณ๊ฒฝ |
โ
|
| DB DROP 0 |
โ
|
| ์ฌ๋ถํ
0 |
โ
|
| SSH ์ค์ ๋ณ๊ฒฝ 0 |
โ
(sshd_config ๋ฌด๋ณ๊ฒฝ, authorized_keys ๋ฌด๋ณ๊ฒฝ) |
7. ๊ฒ์ฆ ๋ถ๊ฐ (์๊ฐ ์์กด)
- DC8 (์ด์ sprint) ๋ค์ cycle 13:55 KST = 04:55 UTC โ ๋ฏธ๋
- 14:00 KST verify timer ์ค trigger โ ๋ฏธ๋ (์ด๋ฒ sprint์ ๋ณ๊ฐ)
- gate ๋ค์ 5๋ถ boundary ์ํ ์ถ์ด โ ์ฌ์ฉ์ ๋๋ ๋ณ๋ sprint์์ ๋ชจ๋ํฐ
8. ๋ฉ๋ชจ๋ฆฌ
hospital-security-harden-tracks-20260501.md (์ด sprint)
- ๊ธฐ์กด
hospital-xmrig-eradicate-20260501.md ๋ณด๊ฐ (mco-bot endpoint ์ ์ )
feedback_mco-bot-blog-endpoint.md (์ฌ์ฌ์ฉ ํจํด)