cd ../blog
MITRE

명령 히스토리 삭제: 공격자가 흔적을 지우는 방법 | T1562.003

읽는 시간 약 8분
조회수 19
MITRE ATT&CK방어 회피고급 지속 위협포렌식 분석보안 운영

명령어 히스토리 삭제 기법으로 공격 흔적을 완전히 제거하는 방법. APT38의 실제 사례와 Linux, Windows, 네트워크 장비별 대응 전략을 알아보세요.

share:
명령 히스토리 삭제: 공격자가 흔적을 지우는 방법 | T1562.003

MITRE ATT&CK: T1562.003 (Impair Command History Logging) | 전술: Defense Evasion | 플랫폼: Linux, macOS, Windows, Network

도입: 왜 이 공격이 중요한가

2020년 북한 연계 해킹 그룹 APT38이 은행 시스템을 공격했을 때, 그들은 모든 명령어 앞에 공백을 하나씩 추가했습니다. 이 간단한 트릭 하나로 그들의 모든 활동이 시스템 로그에서 사라졌습니다. 마치 유령처럼 시스템에 침입해서 흔적을 남기지 않고 사라진 것입니다.

T1562.003 Impair Command History Logging 은 공격자가 시스템에서 실행한 명령어들이 히스토리에 기록되지 않도록 무력화하는 기법입니다. Linux의 .bash_history, Windows의 PowerShell 히스토리, 네트워크 장비의 명령어 로그 등을 조작하여 자신들의 활동 흔적을 완전히 지워버립니다.

💡 쉬운 비유: 눈 위를 걸으면서 뒤를 돌아보며 자신의 발자국을 하나씩 지워가는 것과 같습니다. 명령어 히스토리는 시스템에 남는 디지털 발자국인데, 공격자는 이 발자국이 아예 남지 않도록 설정을 바꿔버립니다.


1. 공격자 관점

왜 이 기법을 사용하는가

  • 완벽한 은밀성: 명령어 히스토리는 포렌식 조사에서 가장 중요한 증거 중 하나인데, 이를 무력화하면 공격 흔적을 거의 찾을 수 없음
  • 지속적 활동 보장: 시스템 관리자나 보안팀이 의심스러운 명령어 기록을 발견할 가능성을 원천 차단
  • 간단한 구현: 환경 변수 몇 개만 조작하면 되는 매우 단순한 방법으로 강력한 은폐 효과 달성

동작 흐름

공격자는 먼저 시스템에 침입한 후, HISTFILE, HISTCONTROL, HISTFILESIZE 같은 환경 변수들을 조작합니다. Linux에서는 unset HISTFILE이나 export HISTFILESIZE=0 명령으로, Windows PowerShell에서는 Set-PSReadlineOption -HistorySaveStyle SaveNothing 명령으로 히스토리 기록을 비활성화합니다.

💡 쉬운 비유: 사라지는 잉크로 메모를 쓰는 것과 같습니다. 잠시 후 잉크가 사라지면 아무 기록도 남지 않죠. 명령어 앞에 공백을 붙이는 것만으로도 그 명령어는 히스토리에서 사라집니다.


2. 실제 공격 사례

📌 APT38 - FASTCash 2.0 캠페인 (2020년)

배경: 북한 연계 해킹 그룹 APT38(일명 BeagleBoyz)이 전 세계 은행들을 대상으로 ATM 현금 인출 공격을 수행했습니다. 이들의 목표는 SWIFT 네트워크를 통한 대규모 자금 탈취였습니다.

공격 과정:

  1. 은행 내부 시스템에 침입한 후 Linux 서버에 접근
  2. 모든 터미널 명령어 앞에 공백(space)을 추가하여 실행
  3. HISTCONTROL 환경 변수의 "ignorespace" 설정을 악용해 공백으로 시작하는 명령어들이 히스토리에 기록되지 않도록 조작
  4. 은행의 핵심 시스템을 조작하면서도 어떤 흔적도 남기지 않음

피해 규모: 전 세계 수십 개 은행에서 수억 달러 규모의 자금이 탈취되었으며, 포렌식 조사에서도 구체적인 공격 명령어들을 복구하지 못함

출처: CISA Alert AA20-239A - FASTCash 2.0: North Korea's BeagleBoyz Robbing Banks

📌 ArcaneDoor - 네트워크 장비 표적 캠페인 (2024년)

배경: 국가 지원을 받는 것으로 추정되는 고도화된 공격 그룹이 전 세계 정부 기관과 핵심 인프라의 Cisco ASA VPN 장비를 표적으로 삼았습니다. 이들의 목적은 장기간 은밀한 정보 수집이었습니다.

공격 과정:

  1. Cisco ASA 방화벽/VPN 장비의 제로데이 취약점을 악용하여 침입
  2. 장비의 로깅 기능을 완전히 비활성화 (no logging 명령 실행)
  3. 네트워크 트래픽을 모니터링하고 조작하면서도 어떤 명령어 기록도 남기지 않음
  4. 몇 년간 탐지되지 않고 지속적으로 정보를 수집

피해 규모: 전 세계 정부 기관과 핵심 인프라 수십 곳이 피해를 입었으며, 일부는 몇 년간 침해 상태가 지속됨

출처: MITRE ATT&CK Campaign C0039 - ArcaneDoor

📌 BPFDoor - 중국 Red Menshen의 Linux 백도어 (2022년)

배경: 중국 연계 Red Menshen 위협 그룹이 전 세계 Linux 서버들을 대상으로 수년간 운영해온 은밀한 백도어가 발견되었습니다. 수천 대의 서버가 감염된 것으로 추정됩니다.

공격 과정:

  1. Linux 서버에 BPFDoor 백도어를 설치한 후 메모리에 상주
  2. MYSQL_HISTFILEHISTFILE 환경 변수를 /dev/null로 설정
  3. 쉘과 MySQL의 모든 명령어 히스토리가 /dev/null로 전송되어 완전히 사라짐
  4. Berkeley Packet Filter를 이용해 네트워크 패킷을 모니터링하면서 원격 제어

피해 규모: 전 세계적으로 수천 대의 Linux 서버가 감염되었으며, 수년간 탐지되지 않고 운영됨

출처: Sandfly Security - BPFDoor Technical Analysis

🔍 UNC3886 RedPenguin - 주니퍼 라우터 백도어 (2025년)

배경: 중국 연계 사이버 스파이 그룹 UNC3886이 전 세계 주니퍼 MX 시리즈 라우터에 TINYSHELL 백도어 변종을 배포했습니다. 이들의 목표는 핵심 네트워크 인프라에 대한 장기 접근 확보였습니다.

공격 과정:

  1. 주니퍼 라우터에 커스텀 백도어(TINYSHELL 변종) 설치
  2. 운영자가 라우터에 접속하기 전에 모든 로깅 비활성화
  1. sed 명령으로 특정 로그 항목만 선택적 삭제: /var/log/interactive-commands에서 root 관련 기록 제거, .history에서 vi, set, gdb 관련 기록 삭제
  2. 작업 완료 후 로깅 재활성화 - 로그에 빈틈이 있지만 정상처럼 보이게 위장

핵심: 단순히 히스토리를 끄는 것이 아니라, 작업 전후로 로깅을 켜고 끄는 정교한 방식. 로그 파일이 존재하기 때문에 관리자가 이상을 눈치채기 어려움.

출처: Google Cloud - UNC3886 Targets Juniper Routers

3. 왜 탐지가 어려운가?

공식 탐지 방법

DET0563 Detection Strategy for Impair Defenses via Impair Command History Logging: 환경 변수 변조(HISTFILE, HISTCONTROL, HISTFILESIZE) 탐지 및 예상되는 bash 히스토리 쓰기 작업의 부재를 모니터링. 활성 쉘 세션과 연관된 히스토리 변수의 해제 또는 0으로 설정은 공격자의 회피 행위를 나타냄.

공격자가 이 기법을 선호하는 이유

  • 정상 기능 악용: 시스템의 정상적인 환경 변수 설정 기능을 악용하므로 악성 활동으로 보이지 않음
  • 소급 적용 불가: 이미 실행된 명령어는 복구할 수 없어서 포렌식 조사에서 결정적 증거를 찾기 어려움
  • 관리자도 사용: 시스템 관리자들도 민감한 작업 시 히스토리를 비활성화하는 경우가 있어 의심받지 않음

탐지의 현실적 한계

환경 변수 변경을 실시간으로 모니터링하는 것은 매우 높은 오탐률을 발생시킵니다. 정상적인 시스템 관리 작업과 구분하기 어려우며, 특히 공격자가 공백을 이용한 우회 기법을 사용하면 기존 로그 분석으로는 탐지가 거의 불가능합니다. 또한 대부분의 조직에서는 명령어 히스토리 파일의 변화를 실시간으로 모니터링하는 시스템을 구축하지 않고 있습니다.


4. 나도 위험할까? 자가 진단

이 공격이 나와 관련 있는지 확인해보세요.

이런 환경이라면 주의가 필요합니다

  • Linux/Unix 서버를 운영하고 있으며 여러 사용자가 SSH로 접속하는 환경
  • Windows 서버에서 PowerShell을 이용한 관리 작업이 빈번한 환경
  • Cisco ASA, 주니퍼 등 네트워크 장비를 CLI로 관리하는 환경
  • 시스템 관리자 계정이 여러 명에게 공유되어 사용되는 환경

공식 대응 방안

M1039 Environment Variable Permissions (환경 변수 권한 관리): 사용자가 HISTCONTROL, HISTFILE, HISTFILESIZE 환경 변수를 변경하지 못하도록 방지합니다.

M1028 Operating System Configuration (운영체제 구성): HISTCONTROL 환경 변수가 "ignoreboth"나 "ignorespace" 대신 "ignoredups"로 설정되도록 확인합니다.

당장 할 수 있는 것

  • 터미널이나 명령 프롬프트 사용 기록이 갑자기 사라졌는지 주기적으로 확인하기
  • 평소와 다른 시스템 동작 발견 시 전문가에게 문의하기
  • 🏢 보안 담당자: 서버의 히스토리 파일을 중앙 로그 서버로 백업하고 무결성 모니터링 적용하기

5. 관련 기술 (내부 링크 포함)

기법어떤 상황에서 함께 사용되는링크
T1070.003 Clear Command History히스토리 기록을 비활성화한 후 기존에 남아있던 명령어 히스토리 파일을 완전히 삭제할 때MITRE 참고
T1562.001 Disable or Modify Tools명령어 히스토리와 함께 시스템 로그, 안티바이러스 등 다른 보안 도구들도 함께 무력화할 때T1562.001 상세 분석
T1562.002 Disable Windows Event LoggingWindows 환경에서 PowerShell 히스토리 무력화와 함께 이벤트 로그까지 비활성화할 때T1562.002 상세 분석

참고 자료


📌 이 글은 AI(Claude) 를 활용하여 작성되었으며, MITRE ATT&CK v18.0 기준 (2025-10-28) 을 기준으로 합니다. 본 콘텐츠는 보안 교육 및 방어 목적으로만 제공되며, 이를 악용한 불법 행위에 대한 책임은 전적으로 행위자 본인에게 있습니다.



?뱛 ??湲€?€ [蹂댁븞 臾대젰??T1562) ?쒕━利?(/blog/t1562-impair-defenses)???쇰??낅땲??

COMMENTS (0)

댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.