
PowerShell 원격 다운로드 Cradle 생성기 및 난독화 도구

Invoke-CradleCrafter는 PowerShell v2.0+ 호환 가능한 PowerShell 원격 다운로드 크래들 생성기이자 난독화 도구입니다.
2016년 가을, Invoke-Obfuscation을 출시한 후 저는 PowerShell 원격 다운로드 크래들 목록이 담긴 스프레드시트를 계속 업데이트하며, 언젠가는 Invoke-Obfuscation에 "크래들 선택기" 메뉴를 추가할 수도 있겠다고 생각했습니다. 이 목록은 제게 생소한 크래들로 구성되어 있었으며, 그중 상당수는 실제 환경에서 널리 (또는 전혀) 관찰되지 않았습니다.
그러나 Invoke-Obfuscation이 임의의 PowerShell 명령이나 스크립트를 난독화하도록 설계되었기 때문에, Invoke-Obfuscation에 포함하기에는 적합하지 않은 맞춤형 크래들을 구축하는 데 필요한 특정 난독화 기법이 있다는 것을 알고 있었습니다.
이것이 바로 이 크래들 연구를 완전히 별도의 프로젝트로 전환하게 된 계기였지만, Invoke-CradleCrafter의 출력 결과를 Invoke-Obfuscation에 입력하여 계속 사용할 수 있습니다. Invoke-CradleCrafter는 훨씬 더 엄격하게 제어되기 때문에, Invoke-Obfuscation에서 찾을 수 있는 어떤 기법과도 완전히 다른 난독화 기법을 포함할 수 있었습니다.
이 도구의 새로운 난독화 기법 중 일부는 데이터 형식 열거 및 와일드카드 매칭을 통한 토큰 난독화, 그리고 추가 변수 및 변수 구문을 도입하여 명령 구조를 재정렬하는 것을 포함합니다.
마지막으로, 이 도구는 가장 널리 사용되는 Invoke-Expression 및 IEX를 넘어서는 10개 이상의 호출 구문을 지원합니다.
Invoke-CradleCrafter는 블루 팀과 레드 팀이 PowerShell 원격 다운로드 크래들을 쉽게 탐색, 생성 및 난독화할 수 있도록 돕기 위해 만들어졌습니다. 또한 블루 팀이 Invoke-Obfuscation이 생성한 출력물에는 효과적일 수 있지만, 문자열 연결, 인코딩, 따옴표, 형변환 등이 포함되지 않은 Invoke-CradleCrafter를 처리할 때는 부족할 수 있는 탐지의 효과를 테스트하는 데 도움이 됩니다.
이 연구 및 도구 개발의 또 다른 중요한 요소는 각 크래들이 실행될 때 남기는 고수준 동작과 아티팩트를 효과적으로 강조하는 것이었습니다. 도구의 대화형 메뉴에서 새로운 크래들 유형을 처음 선택할 때 이 정보를 강조하려고 노력했습니다.
궁극적으로 각 크래들의 동작과 아티팩트에 대해 더 많이 알수록 블루 팀이 이러한 크래들을 더 잘 탐지할 수 있습니다. 이 지식은 또한 레드 팀이 특정 시나리오에서 사용할 크래들을 보다 정보에 기반하여 선택하는 데 도움이 될 것입니다.
모든 크래들은 Out-Cradle 함수를 직접 호출하여 생성할 수 있지만, 누적된 난독화 구성 요소의 다양한 부분이 복잡하기 때문에 Invoke-CradleCrafter 함수를 사용하는 것이 이 프레임워크가 현재 지원하는 크래들 구문과 난독화 기법을 탐색하고 시각화하는 가장 쉬운 방법입니다.
Invoke-CradleCrafter의 소스 코드는 Github에 호스팅되어 있으며, 이 저장소(https://github.com/danielbohannon/Invoke-CradleCrafter)에서 다운로드, 포크 및 검토할 수 있습니다. 이슈나 기능 요청은 Github의 버그 트래커를 통해 이 프로젝트에 보고해 주세요.
설치 방법:
Import-Module ./Invoke-CradleCrafter.psd1
Invoke-CradleCrafter
Invoke-CradleCrafter는 Apache 2.0 라이선스로 배포됩니다.
v1.0 - 2017-04-28 x33fcon (그디니아, 폴란드): Invoke-CradleCrafter 공개 릴리즈.
v1.1 - 2017-05-11 NOPcon (이스탄불, 터키): 3개의 새로운 메모리 기반 크래들 추가:
v1.1.1 - 2018-01-08: 1개의 새로운 메모리 기반 크래들 추가:
v1.1.2 - 2018-02-05: 크래들 정보에 User-Agent 문자열 추가