Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Invoke-DOSfuscation — Cmd.exe 명령 난독화 생성기 및 탐지 테스트 하네스 | Kitploit
도구/GitHubGitHub/danielbohannon/invoke-dosfuscation
Defensive ToolsFuzzingPenetration TestingCommand and ControlRed TeamingIncident Response
GitHubdanielbohannon/invoke-dosfuscation

Invoke-DOSfuscation

Cmd.exe 명령 난독화 생성기 및 탐지 테스트 하네스

저장소 보기
9481408년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Invoke-DOSfuscation v1.0

Invoke-DOSfuscation 스크린샷

소개

Invoke-DOSfuscation은 PowerShell v2.0+ 호환 cmd.exe 명령어 난독화 프레임워크입니다. (백서: https://www.fireeye.com/blog/threat-research/2018/03/dosfuscation-exploring-obfuscation-and-detection-techniques.html)

배경

지난 몇 년간 사고 대응 컨설턴트로서 여러 위협 행위자들이 사용하는 수많은 난독화 및 회피 기술을 목격했습니다. 일부 기술은 매우 복잡한 반면, 다른 기술은 절묘하게 단순하지만, 두 범주 모두 탐지를 회피하기 위해 사용됩니다. 제 경험상, APT32와 FIN7이 가장 매력적인 난독화 기술을 선보였으며, 그들의 창의성은 주목할 만합니다.

2017년 6월, 일련의 점진적인 명령줄 난독화 기술 이후, FIN7은 당시 제가 존재조차 몰랐던 cmd.exe 고유의 환경 변수 문자열 대체 기능을 사용했습니다. 이 발견에 자극을 받아 Nick Carr (@ItsReallyNick)와 공동으로 Obfuscation in the Wild: Targeted Attackers Lead the Way in Evasion Techniques라는 블로그 게시물을 작성했으며, 여기서 우리가 실제 환경에서 식별한 여러 그룹의 난독화 기술을 강조했습니다.

그 다음 주말에 이 cmd.exe 고유의 대체 기능을 탐구하여 Out-FINcodedCommand라는 간단한 개념 증명 도구를 만들고 출시했습니다. 이 POC를 출시하자마자 한 걸음 물러서서 생각했습니다. "아마도 cmd.exe 내에 더 많은 난독화 기능이 있을 것이며, 실제 환경에서 사용되는 것을 발견하기 전에 이를 탐구하고 탐지를 구축해야 한다."

이것이 제 연구의 시작이었고, 결국 이 Invoke-DOSfuscation 프레임워크를 개발하게 되었습니다.

목적

공격자들은 명령줄 인수 값에 크게 의존하는 탐지를 회피하기 위해 점점 더 난독화 기술을 사용하고 있습니다. 이에 대응하기 위해 저는 5개월 동안 cmd.exe 고유의 난독화 및 인코딩 기술을 연구하고 개발하여, 실제 환경에서 아직 보지 못한 이러한 핵심 기술에 대한 강력한 탐지를 만들 수 있었습니다.

이 프레임워크의 유일한 목적은 방어자가 이러한 기술에 대한 탐지 기능을 테스트하고 조정할 수 있도록 수천 개의 고유하게 난독화된 명령어 샘플을 무작위로 생성할 수 있게 하는 것입니다. 이번 릴리스에는 이 탐지 테스트 프로세스를 자동화하기 위해 전체 테스트 하네스를 포함했습니다.

여러 면에서 이 프레임워크는 방어자가 cmd.exe의 난독화 기술을 퍼징할 수 있게 하며, 이 도구를 구축하면서 초기 연구에서 발견하지 못했던 수많은 추가적인 난독화 기회를 발견했습니다.

또한 2017년 11월에 이 정보를 Microsoft와 공유하고, 이 프레임워크에 내장된 모든 난독화 함수의 구성 요소인 핵심 기술의 cmd.exe 사용 내부 동작에 대한 추가적인 가시성을 확보할 수 있는 기회에 대해 문의했습니다.

방어자로서 이 연구 개발의 최종 목표는 인식을 높이고 변화를 이끌어 최종 사용자가 공격자의 끊임없이 변화하는 TTP(도구, 기술 및 절차)로부터 스스로를 더 잘 보호할 수 있도록 돕는 것입니다.

사용법

모든 난독화 구성 요소는 독립적인 공식 함수로 구축되어 있지만, 대부분의 사용자는 Invoke-DOSfuscation 함수가 이 프레임워크가 지원하는 난독화 기술을 탐색하고 시각화하는 가장 쉬운 방법임을 알게 될 것입니다. 그러나 각 난독화 범주에 대한 다양한 조정 옵션을 퍼징하고 깊이 있게 탐구하려면 Invoke-DOSfuscation 함수 래퍼 외부에서 개별 함수를 직접 사용하는 것이 좋습니다.

방어자가 쉽게 퍼징 및 탐지 아이디어 테스트를 시작할 수 있도록, 이 프레임워크는 프로젝트의 나머지 부분과 함께 자동으로 가져오는 추가 모듈 Invoke-DOSfuscationTestHarness.psm1도 포함합니다. 이 모듈에서 방어자를 위한 두 가지 주요 함수는 다음과 같습니다:

  1. Invoke-DosTestHarness - (기본 인수 설정으로) 페이로드 무결성 및 탐지 목적 모두를 위해 테스트 명령어 목록에서 1000개 이상의 무작위 난독화 명령어를 생성합니다. 각 테스트 하네스 반복은 사용 가능한 모든 함수 인수를 무작위화하고, Invoke-DOSfuscation 메뉴 기반 함수가 기본적으로 사용하는 더 표준화된 -ObfuscationLevel 값(1-3) 대신 네 가지 난독화 함수를 직접 호출합니다. 이는 훨씬 더 넓은 범위의 난독화 출력을 생성하여 더 철저한 탐지를 구축할 수 있습니다. 각 난독화 명령어는 두 번째 함수에 대해 확인됩니다:
  2. Get-DosDetectionMatch - 입력 명령(문자열)을 함수의 $regexDetectionTerms 배열에 입력된 모든 정규식 탐지 값과 대조하여 확인합니다. 이 함수는 Invoke-DosTestHarness에 의해 자동으로 호출되지만 독립적으로 호출할 수도 있습니다.

각 테스트 하네스 호출이 끝나면 명령어 실행 및 탐지에 대한 통계가 표시되어 방어자가 어떤 명령어가 0 또는 1-2개의 탐지 일치만 있는지, 그리고 더 나은 커버리지가 필요한지 빠르게 식별할 수 있습니다.

마지막으로, 방어자가 시작하기 위해 테스트 하네스를 실행할 필요가 없도록, 네 가지 난독화 함수 각각에 대해 Samples 디렉토리에 1000개의 샘플 명령어를 제공했습니다. 형식에는 .txt 파일과 Security 및 Sysmon .evtx 파일이 포함됩니다. Invoke-DOSfuscationTestHarness.psm1의 $regexDetectionTerms 배열에 몇 가지 샘플 탐지 규칙을 포함시켰지만, 샘플 난독화 명령어를 테스트하면서 더 많은 규칙을 추가하고 테스트해야 합니다). 원시 명령어가 포함된 .txt 파일 외에도 1000개의 샘플 명령어 각각에 대한 프로세스 실행 로그(Sysmon EID 1 이벤트)가 포함된 .evtx 파일이 있습니다. 이러한 이벤트 로그는 Invoke-DOSfuscation이 구축된 여러 구성 요소 기술의 부산물인 미묘한 자식 프로세스 실행을 기반으로 지표를 구축하는 데 매우 유용합니다.

시작하려면 다음을 실행하여 현재 탐지 규칙과 일치하지 않는 샘플 난독화 명령어를 표시하세요:

(Get-Content .\Samples\STATIC_1-of-4_Out-DosConcatenatedCommand.txt) | where-object { -not (Get-DosDetectionMatch -Command $_).Detected }

Security EID 4688에 기록된 실행 이벤트 로그에서 난독화 명령어와 자식 프로세스를 모두 테스트하려면 다음을 실행하세요:

(Get-WinEvent -Path .\Samples\DYNAMIC_SECURITY_EID4688_1-of-4_Out-DosConcatenatedCommand.evtx) | where-object { $_.Message } | foreach-object { ($_.Message.Split("`n") | select-string '^\tProcess Command Line:\t') -replace '^\tProcess Command Line:\t','' } | where-object { -not (Get-DosDetectionMatch -Command $_).Detected }

설치

Invoke-DOSfuscation의 소스 코드는 Github에 호스팅되어 있으며, 이 저장소(https://github.com/danielbohannon/Invoke-DOSfuscation)에서 다운로드, 포크 및 검토할 수 있습니다. 문제점이나 기능 요청은 이 프로젝트와 관련된 Github의 버그 트래커를 통해 보고해 주세요.

설치하려면:

root@kitploit:~
Import-Module .\Invoke-DOSfuscation.psd1
Invoke-DOSfuscation

라이선스

Invoke-DOSfuscation은 Apache 2.0 라이선스로 배포됩니다.

릴리스 노트

v1.0 - 2018-03-23 Black Hat Asia (싱가포르): Invoke-DOSfuscation 공개 릴리스.

도구 다운로드