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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Revoke-Obfuscation — PowerShell 난독화 탐지 프레임워크 | Kitploit
도구/GitHubGitHub/danielbohannon/revoke-obfuscation
Defensive ToolsStatic AnalysisCode AnalysisMalware AnalysisThreat IntelligencePapers & ResearchLearning & Education
GitHubdanielbohannon/revoke-obfuscation

Revoke-Obfuscation

PowerShell 난독화 탐지 프레임워크

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Revoke-Obfuscation v1.0

Revoke-Obfuscation 데모

Revoke-Obfuscation 스크린샷

소개

Revoke-Obfuscation은 PowerShell v3.0+와 호환되는 PowerShell 난독화 탐지 프레임워크입니다.

저자

Daniel Bohannon (@danielhbohannon) Lee Holmes (@Lee_Homes)

연구

블로그 게시글: https://www.fireeye.com/blog/threat-research/2017/07/revoke-obfuscation-powershell.html

백서: https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/revoke-obfuscation-report.pdf

배경

2016년 가을과 2017년 봄에 Daniel Bohannon (@danielhbohannon)은 두 개의 오픈소스 PowerShell 난독화 프레임워크인 Invoke-Obfuscation과 Invoke-CradleCrafter를 공개했습니다. 이 연구와 프레임워크의 목표는 공격자의 PowerShell 사용을 탐지하는 순수 시그니처 기반 접근 방식의 한계를 강조하는 것이었습니다. 방어자에게 전달된 핵심 메시지는 알려진 의심스러운 구문 외에도 난독화 지표를 탐지하는 데 집중하라는 것이었습니다.

그러나 Invoke-Obfuscation과 Invoke-CradleCrafter의 극단적인 무작위화 수준과 PowerShell 스크립트 블록 로깅에서 역난독화되지 않는 토큰 계층 난독화 옵션으로 인해 방어자들은 알려진 난독화 기술과 알려지지 않은 난독화 기술을 모두 일반적으로 탐지할 수 있는 새롭고 확장 가능한 방법을 찾게 되었습니다.

Invoke-Obfuscation 공개 몇 주 후, Lee Holmes (@Lee_Homes)는 More Detecting Obfuscated PowerShell이라는 제목의 블로그 게시글을 작성했으며, 여기서 그는 심하게 난독화된 스크립트(특히 Invoke-Obfuscation에서 생성된 스크립트)에서 발견되는 비정상적인 특징을 탐지하기 위한 통계 분석 기법을 강조했습니다.

이 교류 이후 Daniel과 Lee는 좋은 친구가 되었으며 많은 공통 관심사/집착을 공유하게 되었습니다. 즉, 고급 커피에 대한 사랑과 난독화된 PowerShell을 철저히 탐지하는 새로운 방법을 만드는 추구였습니다.

두 블루팀원이 연구와 POC 코드를 분석하는 데 보낸 시간은 적절한 4분 목표 추출 시간을 가정했을 때 수천 잔의 Chemex 추출 커피에 해당할 것입니다(적어도 한 명 이상의 커피 애호가가 이 "푸어 오버" 말장난을 알아챘을 경우).

Revoke-Obfuscation은 이러한 노력의 최종 수제품입니다.

목적

Revoke-Obfuscation은 대규모로 난독화된 PowerShell 명령과 스크립트를 탐지하기 위한 오픈소스 PowerShell v3.0+ 프레임워크입니다. PowerShell의 AST(추상 구문 트리)를 활용하여 입력된 PowerShell 스크립트에서 수천 개의 특징을 신속하게 추출하고, 이 특징 벡터를 408K+ PowerShell 스크립트 말뭉치에 대해 수행된 자동 학습 프로세스를 통해 계산된 여러 사전 정의된 가중 특징 벡터 중 하나와 비교합니다. 이 전체 말뭉치는 (https://aka.ms/PowerShellCorpus)에서 다운로드할 수 있습니다. 이 작업의 데이터 과학 측면에 대한 자세한 내용은 저장소의 'DataScience' 하위 디렉토리에서 확인할 수 있습니다.

Revoke-Obfuscation은 순수 IOC 또는 RegEx 매칭 대신 특징 추출 및 비교에 의존하기 때문에, 공격자가 문자 빈도 분석과 같은 기본 검사를 무력화하기 위해 난독화를 난독화되지 않은 스크립트 내용으로 채워 완화하려고 시도하더라도 알려지지 않은 난독화 기술을 식별하는 데 더 강력합니다.

Revoke-Obfuscation은 대부분의 입력 PowerShell 스크립트를 100-300밀리초 이내에 쉽게 측정할 수 있습니다. 이 수준의 성능을 통해 조직은 SIEM에 자세한 PowerShell 스크립트 블록 로그를 인덱싱할 필요 없이 시간당 (최악의 경우) 12K+ PowerShell 스크립트의 난독화를 측정할 수 있습니다.

마지막으로, Revoke-Obfuscation은 쉬운 화이트리스트 기능과 함께 PowerShell Operational 이벤트 로그 레코드를 수집하고 여러 스크립트 블록 EID 4104 레코드에 기록된 스크립트 블록을 재조립하는 기능을 지원합니다. 환경의 PowerShell Operational 이벤트 로그를 수집하고, 해당 로그 내의 모든 스크립트를 재조립 및 중복 제거한 다음, 수동 검사가 필요한 난독화된 PowerShell 스크립트를 식별하는 원스톱 솔루션이 될 수 있습니다.

설치

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

설치 (Github에서):

root@kitploit:~
Import-Module .\Revoke-Obfuscation.psd1

소스 코드는 다음 명령을 통해 PowerShell 갤러리에서 직접 설치할 수도 있습니다.

설치 (PowerShell 갤러리에서):

root@kitploit:~
Install-Module Revoke-Obfuscation
Import-Module Revoke-Obfuscation

사용법

Revoke-Obfuscation은 자세한 튜토리얼과 몇 가지 재미있는 서프라이즈를 제공합니다. 하지만 장난에 관심이 없다면 Get-Help Measure-RvoObfuscation을 실행하여 사용법 구문을 확인하거나 계속 읽으면 됩니다.

이 프레임워크에서 사용되는 두 가지 주요 함수가 있습니다:

  • Get-RvoScriptBlock -- EID 4104 스크립트 블록 로그에서 스크립트 재조립
  • Measure-RvoObfuscation -- 입력 스크립트를 측정하고 난독화 점수 반환

PowerShell Operational 로그에서 스크립트 블록 로그를 재조립하고 추출해야 하는 경우 Get-RvoScriptBlock이 선택 함수입니다. 이 함수는 자동으로 고유한 스크립트 블록만 반환하며 악성으로 간주되지 않는 특정 기본 스크립트 블록 값을 제외합니다. 이는 -Deep 스위치로 재정의할 수 있습니다.

  • Get-RvoScriptBlock -Path 'C:\Windows\System32\Winevt\Logs\Microsoft-Windows-PowerShell%4Operational.evtx' -Verbose
  • Get-ChildItem .\Demo\demo.evtx | Get-RvoScriptBlock -Verbose
  • Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock -Verbose

Get-RvoScriptBlock은 MIR/HX 감사 결과와 Matt Graeber(@mattifestation)의 CimSweep 프로젝트(https://github.com/PowerShellMafia/CimSweep)를 통해 검색된 PowerShell Operational 로그도 지원합니다. CimSweep의 경우 WMI가 비클래식 이벤트 로그를 쿼리하도록 속이기 위한 약간의 레지스트리 조정이 필요합니다. 자세한 내용은 Get-RvoScriptBlock의 NOTES 섹션에서 확인할 수 있습니다.

  • Get-ChildItem C:\MirOrHxAuditFiles\*_w32eventlogs.xml | Get-RvoScriptBlock -Verbose
  • Get-CSEventLogEntry -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock

demo.evtx에 기록된 테스트 데이터에 대한 전체 예제는 아래에서 확인할 수 있습니다.

root@kitploit:~
$obfResults = Get-WinEvent -Path .\Demo\demo.evtx | Get-RvoScriptBlock | Measure-RvoObfuscation -OutputToDisk -Verbose

로컬 및 원격으로 호스팅된 테스트 스크립트에 대한 전체 예제는 아래에서 확인할 수 있습니다.

  • Measure-RvoObfuscation -Url 'http://bit.ly/DBOdemo1' -Verbose -OutputToDisk
  • Get-Content .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk
  • Get-ChildItem .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk

-OutputToDisk 스위치는 자동으로 모든 난독화된 스크립트를 .\Results\Obfuscated\에 출력합니다. 어쨌든 모든 결과는 스크립트 내용과 난독화 점수, 측정 시간, 화이트리스트 결과, 추출된 모든 스크립트 특징 등의 메타데이터를 포함하는 PSCustomObject로 반환됩니다.

Revoke-Obfuscation에는 두 위치에 세 가지 화이트리스트 옵션이 있습니다.

  1. 디스크에 저장 (존재할 경우 자동 적용):
    1. .\Whitelist\Scripts_To_Whitelist\ -- 이 디렉토리에 배치된 모든 스크립트는 해시되며 동일한 스크립트는 화이트리스트에 추가됩니다. 이 화이트리스트 방법이 다음 두 옵션보다 선호됩니다.
    2. .\Whitelist\Strings_To_Whitelist.txt -- 이 파일의 문자열 중 하나라도 포함된 스크립트는 화이트리스트에 추가됩니다. 구문: 규칙_이름,화이트리스트_문자열
    3. .\Whitelist\Regex_To_Whitelist.txt -- 이 파일의 정규식 중 하나라도 포함된 스크립트는 화이트리스트에 추가됩니다. 구문: 규칙_이름,화이트리스트_정규식
  2. Measure-RvoObfuscation의 인수 (위 화이트리스트 옵션에 추가로 적용):
    1. -WhitelistFile -- -WhitelistFile .\files\*.ps1,.\more_files\*.ps1,.\one_more_file.ps1
    2. -WhitelistContent -- -WhitelistContent '화이트리스트 문자열 1','화이트리스트 문자열 2'
    3. -WhitelistRegex -- -WhitelistRegex '화이트리스트 정규식 1','화이트리스트 정규식 2'

자체 훈련 데이터 세트를 생성하고 Measure-Vector 함수에 대한 가중치 벡터를 생성하려면 ModelTrainer.cs/ModelTrainer.exe를 레이블이 지정된 데이터 세트에 대해 실행할 수 있습니다. 다음 명령은 모든 입력 스크립트에서 특징 벡터를 추출하고 이 훈련 단계에서 사용되는 단일 CSV로 집계합니다.

root@kitploit:~
Get-ChildItem .\*.ps1 | ForEach-Object { [PSCustomObject](Get-RvoFeatureVector -Path $_.FullName) | Export-Csv .\all_features.csv -Append }

마지막으로, PowerShell의 AST(추상 구문 트리)의 힘을 활용하는 지표(IOC) 생성을 위한 플랫폼을 찾고 있다면(난독화되지 않은 악성 PowerShell 활동을 식별하는 데 적극 권장), PS Script Analyzer가 이러한 작업을 처리하도록 설계된 훌륭한 프레임워크입니다.

라이선스

Revoke-Obfuscation은 Apache 2.0 라이선스로 배포됩니다.

릴리스 노트

v1.0 - 2017-07-27 Black Hat USA 및 2017-07-30 DEF CON: Revoke-Obfuscation 공개 릴리스.

도구 다운로드