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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Empire — Empire는 PowerShell 및 Python 기반의 사후 침투 에이전트입니다. | Kitploit
도구/GitHubGitHub/empireproject/empire
Privilege EscalationPayload GenerationPersistence MechanismsExploitationLateral MovementPost-ExploitationPenetration TestingCommand and ControlRed TeamingArchived
GitHubempireproject/empire

Empire

7.9k2.9k6년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Empire는 PowerShell 및 Python 기반의 사후 침투 에이전트입니다.

저장소 보기웹사이트

Invoke-Obfuscation v1.8

Invoke-Obfuscation Screenshot

소개

Invoke-Obfuscation은 PowerShell v2.0+와 호환되는 PowerShell 명령 및 스크립트 난독화 도구입니다.

배경

2015년 가을, 저는 PowerShell 언어의 유연성을 연구하기 시작했으며, 대부분의 공격자가 일반적으로 사용하는 몇 가지 일반적인 기법을 달성하는 다양한 방법을 정리하기 시작했습니다.

처음에는 인코딩된 명령과 원격 다운로드 크래들 문법에 초점을 맞추었습니다. 명령 실행을 방해하지 않는 다양한 이스케이프 문자가 실행 중인 프로세스와 Security EID 4688 및 Sysmon EID 1 이벤트 로그에 기록된 명령줄 인수에 그대로 남아 있다는 것을 발견했습니다. 이로 인해 PowerShell 명령이나 스크립트에서 발견되는 각 종류의 "토큰"을 난독화하는 방법을 체계적으로 탐구하게 되었습니다.

그 후 문자열 수준 난독화를 수행하는 더 난해한 방법, 다양한 인코딩/암호화 기법 (예: ASCII/hex/octal/binary 및 SecureString), 그리고 마지막으로 powershell.exe로부터 명령줄 인수를 추상화하고 이를 부모 및 심지어 조부모 프로세스로 다시 전달하는 PowerShell 실행 기법을 탐구했습니다.

목적

공격자와 상용 악성코드는 매우 기본적인 난독화 기법을 사용하여 powershell.exe의 명령줄 인수에서 명령의 대부분을 숨기기 시작했습니다. 저는 PowerShell 2.0-5.0에서 구문적으로 가능하다고 현재 알고 있는 내용을 바탕으로 난독화된 명령을 시뮬레이션하여 Blue Team이 이러한 기법의 탐지 능력을 테스트할 수 있도록 이 도구를 개발했습니다.

이 도구의 유일한 목적은 PowerShell 명령이 명령줄에 어떻게 나타날 수 있는지에 대한 방어자의 가정을 깨는 것입니다. 제 바람은 Blue Team이 명령줄에서 난독화 지표(Indicators of Obfuscation)를 찾도록 전환하고, 또한 Module, ScriptBlock 및 Transcription 로깅을 포함하도록 PowerShell 로깅을 업데이트하게 하는 것입니다. 이러한 소스는 이 도구가 생성하는 난독화 기법의 대부분의 측면을 단순화하기 때문입니다.

사용법

모든 난독화 계층은 별도의 스크립트로 구축되었지만, 대부분의 사용자는 Invoke-Obfuscation 함수가 이 프레임워크가 현재 지원하는 난독화 기법을 탐색하고 시각화하는 가장 쉬운 방법임을 알게 될 것입니다.

설치

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

설치 방법:

root@kitploit:~
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation

라이선스

Invoke-Obfuscation은 Apache 2.0 라이선스 하에 배포됩니다.

릴리스 노트

v1.0 - 2016-09-25 DerbyCon 6.0 (Louisville, Kentucky USA): Invoke-Obfuscation 공개 릴리스.

v1.1 - 2016-10-09 SANS DFIR Summit (Prague, Czech Republic): 모든 해당 TOKEN 난독화 함수에 -f 형식 연산자 재정렬 기능을 추가했습니다. 또한 변수 값을 설정하기 위한 추가 구문 옵션을 추가했습니다.

v1.2 - 2016-10-20 CODE BLUE (Tokyo, Japan): Type TOKEN 난독화 추가 (형식 이름에 대한 문자열 난독화 옵션이 있는 직접 형식 캐스팅).

v1.3 - 2016-10-22 Hacktivity (Budapest, Hungary): 두 개의 새로운 LAUNCHER 추가: CLIP+ 및 CLIP++. 또한 For-EachObject/%가 필요 없는 모든 ENCODING 함수에 추가 (및 더 간단한) 배열 문자 변환 구문을 추가했습니다.

v1.4 - 2016-10-28 BruCON (Ghent, Belgium): 새로운 BXOR ENCODING 함수 추가. 또한 모든 ENCODING 함수의 모든 구성 요소와 모든 LAUNCHER의 PowerShell 실행 플래그에 대해 무작위 대소문자 기능을 개선했습니다. 마지막으로, 모든 LAUNCHER에 -ExecutionPolicy의 단축 옵션인 -EP와 -WindowStyle PowerShell 실행 플래그의 선택적 정수 표현을 추가했습니다: Normal (0), Hidden (1), Minimized (2), Maximized (3).

v1.5 - 2016-11-04 Blue Hat (Redmond, Washington USA): WMIC 명령줄 인수의 일부 무작위화를 포함한 WMIC LAUNCHER 추가.

v1.6 - 2017-01-24 Blue Hat IL (Tel Aviv, Israel):

  • CLI 기능 추가: 예: Invoke-Obfuscation -ScriptBlock {Write-Host 'CLI FTW!'} -Command 'Token\All\1, Encoding\1,Launcher\Stdin++\234,Clip' -Quiet -NoExit
  • 한 번에 하나의 난독화 계층을 제거하는 UNDO 기능 추가.
  • 대규모 스크립트 난독화 속도 향상을 위해 Token\All\1에서 공백 난독화 제거.
  • 방어자를 지원하기 위해 모든 실행기(launcher)에 프로세스 인수 트리(Process Argument Tree) 출력 추가.
  • BACK 또는 HOME을 사용하지 않아도 되는 기본 메뉴 자동 감지 기능 추가: 예: TOKEN, ALL, 1을 실행한 다음 LAUNCHER를 입력하면 홈 메뉴로 돌아가기 위해 HOME이나 BACK을 입력할 필요 없이 LAUNCHER 메뉴로 이동합니다.
  • CLI 및 대화형 모드에서 사용되는 다중 명령 구문 추가: 예: Token\All\1,String\3,Encoding\5,Launcher\Ps\234,Clip
  • 모든 메뉴 및 난독화 명령에 정규식 기능 추가: 예: Token**,String[13],Encoding(1|6),Launcher.*[+]{2}\234,Clip
  • OUT FILEPATH 단일 명령 기능 추가.
  • powershell -enc 구문이 SCRIPTBLOCK 값으로 입력된 경우 디코딩 추가.
  • 모든 ENCODING 함수에서 ForEach-Object/%의 무작위 구문 옵션에 ForEach 별칭 추가.
  • Out-SecureStringCommand.ps1에 -Key -Ke -K KEY 부분 문자열 구문 옵션 추가.
  • 모든 \Home\String 난독화 함수에 더 철저한 대소문자 무작위화 추가.
  • PowerShell 2.0에서 실행 시 필요하므로 CLIP+ 및 CLIP++ 실행기 함수에 -ST/-STA (Single-Threaded Apartment) 플래그 추가.
  • 변수 값을 가져오기 위해 Get-ChildItem이 사용되는 모든 곳에 Get-Item/GI/Item 구문 추가.
  • TYPE 난독화 함수에 Set-Item 변수 인스턴스화 구문 추가.
  • Out-ObfuscatedStringCommand.ps1의 Out-EncapsulatedInvokeExpression 함수에서 PowerShell 자동 변수 및 환경 변수 값 연결을 사용하는 추가 Invoke-Expression/IEX 구문을 추가하고 모든 실행기, STRING 및 ENCODING 함수에 복사하여 IEX에 대한 다양한 명령줄 구문을 추가.
  • String\Reverse 및 모든 ENCODING 난독화 옵션에 대한 두 가지 새로운 JOIN 구문 추가:
  1. [String]::Join('',$string) JOIN 구문 추가
  2. OFS 변수 JOIN 구문 추가 (출력 필드 구분 기호 자동 변수)
  • Encoding\5에 두 가지 추가 SecureString 구문 추가:
  1. PtrToStringAnsi / SecureStringToGlobalAllocAnsi
  2. PtrToStringBSTR / SecureStringToBSTR
  • 여러 SecureString 멤버에 대한 6가지 GetMember 대체 구문 추가:
  1. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[3].Name).Invoke
  2. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[5].Name).Invoke
  3. PtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[2].Name).Invoke
  4. PtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[4].Name).Invoke
  5. PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[0].Name).Invoke
  6. PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[1].Name).Invoke
  • Out-ObfuscatedTokenCommand.ps1 업데이트: VARIABLE 난독화가 이미 ${}로 캡슐화된 변수를 ${}로 다시 캡슐화하지 않도록 수정 (이로 인해 ${${var}}와 같은 오류가 발생하지 않음).
  • Invoke-Obfuscation.psm1을 Invoke-Obfuscation.psd1로 대체 (@Carlos_Perez님 감사).
  • @cobbr_io 및 @IISResetMe가 보고한 여러 TOKEN 수준 난독화 버그 수정.

v1.7 - 2017-03-03 nullcon (Goa, India):

  • 3개의 새로운 LAUNCHER 추가: RUNDLL, RUNDLL++ 및 MSHTA++
  • 추가 ExecutionContext 와일드카드 변수 문자열 추가

v1.8 - 2017-07-27 Black Hat (Las Vegas, Nevada USA):

  • 2개의 새로운 ENCODING 옵션 추가: 특수 문자 및 공백
도구 다운로드