docs: record 51124 bot account compromise eradication
This commit is contained in:
parent
59c5f4af19
commit
ed629925f7
@ -0,0 +1,76 @@
|
||||
# 51124 bot 계정 SSH 침해 대응 및 박멸 기록
|
||||
|
||||
**날짜**: 2026-02-26
|
||||
**작성자**: admin
|
||||
**관련 파일**: `/var/log/auth.log*`, `/home/bot/.configrc7/*`, `/var/spool/cron/crontabs/bot`
|
||||
|
||||
---
|
||||
|
||||
## 문제 상황
|
||||
- 51124 서버에서 비정상 고메모리 프로세스(`kauditd0`) 발견
|
||||
- 실체 확인 결과 `/home/bot/.configrc7/a/kswapd00` 실행 파일로 위장 동작
|
||||
- `bot` crontab에 재실행 지속성(`*/30 * * * * /tmp/.kswapd00 || /home/bot/.configrc7/a/kswapd00`) 존재
|
||||
|
||||
## 침해 지표(IOC)
|
||||
- 프로세스/파일
|
||||
- `kauditd0`, `kswapd00`, `edac0`
|
||||
- `/home/bot/.configrc7/a/*`, `/home/bot/.configrc7/b/*`
|
||||
- `/tmp/.kswapd00`, `/tmp/.X28-unix/.rsync/c/aptitude`
|
||||
- SSH/지속성
|
||||
- `~/.ssh/authorized_keys`에 `mdrfckr` 주석의 `ssh-rsa` 키 주입 흔적
|
||||
- `chattr +/-ia`를 이용한 `.ssh` 잠금 시도
|
||||
- 네트워크
|
||||
- 공격 유입 성공 IP: `179.43.139.82`
|
||||
- 감염 프로세스 외부 연결 IP: `179.43.139.85:80`
|
||||
|
||||
## 로그 기반 사실 확인
|
||||
- `2026-02-18 18:46:05 KST`: `Accepted password for bot from 179.43.139.82`
|
||||
- `2026-02-18 18:54:06 KST`: `Accepted password for bot from 179.43.139.82`
|
||||
- `root` 계정 `Accepted` 로그인 성공 기록은 보관 로그 기준 미검출
|
||||
- `admin` 계정은 정상 운영 접속으로 보이는 `Accepted` 기록 다수 존재
|
||||
|
||||
## 원인 판정
|
||||
- SSH 비밀번호 인증 허용 상태(`passwordauthentication yes`)에서 `bot` 계정 비밀번호 기반 침입 성공
|
||||
- `bot` 계정이 `sudo`/`docker` 권한 보유(`sudo ALL`) 상태여서 감염 스크립트 설치 및 지속성 확보가 가능했던 구조
|
||||
|
||||
## 조치 내역
|
||||
1. 악성 프로세스 종료
|
||||
- `kauditd0/kswapd00/edac0` 관련 프로세스 킬
|
||||
2. 지속성 제거
|
||||
- `crontab -u bot -r`로 `bot` 사용자 크론 제거
|
||||
3. 악성 파일 제거
|
||||
- `/home/bot/.configrc7`, `/tmp/.kswapd00`, `/tmp/.X28-unix/.rsync` 삭제
|
||||
4. 백도어 키 제거
|
||||
- `/home/bot/.ssh/authorized_keys`의 `mdrfckr` 키 제거
|
||||
- 백업: `/home/bot/.ssh/authorized_keys.bak.20260226212628`
|
||||
5. 계정 비밀번호 교체
|
||||
- `2026-02-26` 기준 `admin`, `root`, `bot` 비밀번호 변경 완료
|
||||
|
||||
## 검증 결과
|
||||
- `kauditd0/kswapd00/edac0` 프로세스 미검출
|
||||
- `bot` crontab 미존재 확인
|
||||
- IOC 경로(`/home/bot/.configrc7`, `/tmp/.kswapd00`, `/tmp/.X28-unix/.rsync`) 미존재 확인
|
||||
- `mdrfckr` 키 미검출 확인
|
||||
- 서비스 영향 없음: `docker ps` 전체 `Up`, `curl http://localhost:8001/health` HTTP 200
|
||||
|
||||
## 남은 리스크
|
||||
- 보관 로그 한계로 과거 데이터 조회/유출 여부를 100% 확정할 수 없음
|
||||
- `bot` 계정으로 읽기 접근된 비밀값(API 키, 토큰, DB 접속정보)은 노출 가능성 배제 불가
|
||||
|
||||
## 후속 권고
|
||||
1. SSH 하드닝
|
||||
- `PasswordAuthentication no`
|
||||
- `AllowUsers admin` 등 접속 사용자 제한
|
||||
2. 계정 정리
|
||||
- `bot` 계정 업무 불필요 시 잠금(`usermod -L`) 또는 삭제
|
||||
- `sudo`/`docker` 최소 권한 재설계
|
||||
3. 비밀값 로테이션
|
||||
- `.env` 기반 토큰/Gitea 토큰/외부 API 키 전면 교체
|
||||
4. 모니터링 강화
|
||||
- `auth.log`의 `Accepted password` 이상 탐지 알림
|
||||
- 크론/시스템 서비스 신규 등록 이벤트 모니터링
|
||||
|
||||
## 교훈
|
||||
- 비밀번호 SSH 허용 + 고권한 사용자 조합은 자동화 봇넷 침해에 매우 취약함
|
||||
- 박멸은 `프로세스 종료`만으로 끝나지 않고 `크론/파일/SSH 키`까지 함께 제거해야 재감염을 막을 수 있음
|
||||
- 침해 대응 후에는 서비스 정상 여부(`docker ps`, healthcheck)와 보안 후속조치를 같은 작업 단위로 처리해야 함
|
||||
Loading…
x
Reference in New Issue
Block a user