# 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)와 보안 후속조치를 같은 작업 단위로 처리해야 함