DOCS/journey/troubleshooting/260226_51124_bot_account_compromise_and_eradication.md

3.5 KiB

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_keysmdrfckr 주석의 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 -rbot 사용자 크론 제거
  3. 악성 파일 제거
    • /home/bot/.configrc7, /tmp/.kswapd00, /tmp/.X28-unix/.rsync 삭제
  4. 백도어 키 제거
    • /home/bot/.ssh/authorized_keysmdrfckr 키 제거
    • 백업: /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.logAccepted password 이상 탐지 알림
    • 크론/시스템 서비스 신규 등록 이벤트 모니터링

교훈

  • 비밀번호 SSH 허용 + 고권한 사용자 조합은 자동화 봇넷 침해에 매우 취약함
  • 박멸은 프로세스 종료만으로 끝나지 않고 크론/파일/SSH 키까지 함께 제거해야 재감염을 막을 수 있음
  • 침해 대응 후에는 서비스 정상 여부(docker ps, healthcheck)와 보안 후속조치를 같은 작업 단위로 처리해야 함