GoAround
AMSI 우회 생성 및 세 가지 난독화 방법을 사용한 PowerShell 스크립트 자동 난독화를 가능하게 하는 도구입니다. GoAround는 MIT 라이선스로 배포됩니다. 자세한 내용은 LICENSE를 참조하세요.
책임 부인
이 도구는 침투 테스터의 일상적인 사후 침투 작업을 돕고 연구 프로젝트로서 개발되었습니다. 이 도구의 악의적인 사용이나 허가 없이 타사 시스템에서 사용하는 경우 그 책임은 전적으로 사용자에게 있습니다.
설치
Github에서 코드를 다운로드한 후 Windows 명령줄이나 PowerShell 콘솔에서 도구를 실행하기만 하면 됩니다.
사용 설명서
GoAround를 사용하면 다음 두 가지 작업을 수행할 수 있습니다.
- AMSI 우회에 필요한 코드가 포함된 PowerShell 스크립트 생성. 생성된 코드는 자동으로 난독화될 수 있습니다.
- 다양한 기술을 사용한 PowerShell 스크립트의 자동 난독화.
사용자는 두 가지 AMSI 우회 방법과 세 가지 난독화 기술 중에서 선택할 수 있습니다.
사용 방법
이 도구를 사용하려면 컴퓨터에 Python이 설치되어 있어야 합니다. 다음 경로를 PATH 환경 변수에 추가해야 합니다.
- C:\Users{Usuario}\AppData\Local\Programs\Python\Python39
- C:\Users{Usuario}\AppData\Local\Programs\Python\Python39\Scripts
이 작업이 완료되면 명령줄에서 다음 두 가지 방법 중 하나로 도구를 실행할 수 있습니다.
- 도구 폴더에서: python goaround.py {옵션}
- 다른 폴더에서: python {GoAround 폴더의 전체 경로} {옵션}
명령 구조는 다음과 같습니다.
python goaround.py -m [모드] (-t [유형]) (-f [난독화_유형]) (-i [입력_파일]) (-o [출력_파일])
대괄호 안의 모든 옵션은 선택 사항입니다. 이러한 옵션의 값은 다음과 같습니다.
- -m 또는 --mode: 유일한 필수 옵션입니다. 도구가 실행될 작동 모드를 나타냅니다. 자세한 내용은 작동 모드 섹션을 참조하세요.
- -t 또는 --type: 모드가 bypass인 경우 사용할 우회 유형을 나타내고, 모드가 obfuscate인 경우 난독화 방법 유형을 나타냅니다. 다양한 우회 유형은 우회 유형 섹션을, 사용 가능한 난독화 방법은 난독화 방법 섹션을 참조하세요.
- -f 또는 --obfuscation: 작동 모드가 bypass인 경우, 이 옵션은 우회에 대한 난독화 유형을 선택하는 데 사용됩니다. 이 옵션은 obfuscate 모드에서는 사용할 수 없으며, 대신 "-t" 또는 "--type"을 사용하세요. 다양한 난독화 방법은 난독화 방법 섹션을 참조하세요.
- -i 또는 --input: obfuscate 모드에서만 사용됩니다. 사용자가 난독화할 파일을 선택할 수 있습니다.
- -o 또는 --output: 이 옵션을 사용하면 생성된 스크립트의 이름을 선택할 수 있습니다. 이름은 ".ps1"로 끝나야 합니다. 기본적으로 출력 파일 이름은 "output.ps1"입니다.
또한 다음 옵션도 지원되며 단독으로 실행되어야 합니다(다른 옵션 없이).
- -h 또는 --help: 사용자에게 도구 사용 가이드를 표시합니다.
- -v 또는 --version: 도구의 버전 번호를 표시합니다.
작동 모드
bypass와 obfuscate 두 가지 작동 모드가 있으며, "-m" 또는 "--mode" 옵션으로 선택합니다.
- bypass: 도구가 우회 모드로 실행됨을 나타냅니다. 이 경우 AMSI 우회 코드가 포함된 PS1 파일이 생성됩니다.
- obfuscate: 도구가 난독화 모드로 실행됨을 나타냅니다. 이 경우 도구는 "-i" 또는 "--input" 옵션(이 작동 모드에서는 필수)으로 사용자가 제공한 파일을 난독화합니다. 난독화된 코드가 포함된 PS1 파일이 생성됩니다. 난독화는 PowerShell 스크립트에만 적용됩니다.
우회 유형
bypass 모드(-m bypass)에서 우회 유형은 "-t" 또는 "--type" 옵션으로 지정할 수 있습니다.
현재 지원되는 우회 유형은 다음과 같습니다.
- reflection: Matt Graeber의 reflection 우회.
- scan_buffer_laine: Paul Laîné의 AmsiScanBuffer 패치 우회.
유형이 지정되지 않으면 기본적으로 reflection 우회가 사용됩니다.
난독화 방법
현재 이 도구는 세 가지 PowerShell 난독화 기술을 지원합니다.
bypass 모드에서 난독화 유형을 선택하려면 "-f" 또는 "--obfuscation" 옵션을 사용합니다(지정하지 않으면 우회가 난독화되지 않습니다). obfuscate 모드에서 난독화 유형을 선택하려면 "-t" 또는 "--type" 옵션을 사용합니다(지정하지 않으면 concatenation 기술이 사용됩니다).
난독화 유형의 이름은 다음과 같습니다.
- mayus: randomcase 기술을 사용하여 PowerShell 코드를 변경합니다. 코드에 있는 문자열에는 영향을 미치지 않습니다. 이 방법은 파일의 해시를 변경합니다.
- concatenation: obfuscate 모드에서 기본적으로 사용되는 방법입니다. 코드에 있는 문자열을 더 작은 문자열의 연결로 변경합니다. 문자열은 무작위로 분할되므로 동일한 입력 파일에 대해 매번 코드가 달라집니다.
- insertion: 코드에 있는 문자열을 문자열과 변수의 조합으로 변경합니다. 예를 들어, 코드에 "amsiutils"라는 문자열이 있으면 "am$var_tfm0"로 대체될 수 있으며, 여기서 *var_tfm0 = "siutils"*입니다. 문자열은 무작위로 분할되므로 동일한 입력 파일에 대해 매번 코드가 달라집니다. 변수는 "var_tfm{숫자}" 형식의 이름을 가지므로, 원본 코드에 이와 같은 이름의 변수가 있다면 난독화 단계 전에 변경해야 합니다.
예제
다음은 몇 가지 사용 예입니다.
도움말 메뉴 표시
python main.py -h
python main.py --help
도구 버전 번호 표시
python main.py -v
python main.py --version
변수 삽입을 사용하여 난독화된 reflection 우회 생성
python main.py -m bypass -t reflection -f insertion
출력 파일 이름을 변경하여 Paul Laîné 우회 생성
python main.py -m bypass -t scan_buffer_laine -o "output_name.ps1"
문자열 연결 방법을 사용하여 파일 난독화
python main.py -m obfuscate -t concatenation -i "input_required.ps1"