
.NET 런타임 검사기
_Shed_는 프로그램의 .NET 런타임을 검사하여 유용한 정보를 추출할 수 있는 애플리케이션입니다. 악성 애플리케이션을 검사하여 맬웨어가 실행될 때 저장되는 정보에 대한 첫 번째 일반 개요를 확인하는 데 사용할 수 있습니다.
_Shed_는 다음을 수행할 수 있습니다:
_Shed_는 명령줄 도구입니다. 사용 가능한 모든 옵션을 보려면 다음을 실행하세요:
shed.exe --help
이미 실행 중인 프로세스를 검사하려면 _Shed_에 pid를 전달해야 합니다. 예시:
Shed.exe --pid 2356
바이너리를 검사하려면 _Shed_가 바이너리를 실행하고 런타임을 검사하기 위해 연결해야 합니다. 예시:
Shed.exe --exe malware.exe
프로세스를 일시 중단하기 전에 대기할 시간(밀리초)을 지정할 수도 있습니다. 이렇게 하면 프로그램이 속성을 초기화할 시간을 가질 수 있습니다. 예시:
Shed.exe --timeout 2000 --exe malware.exe
_Shed_를 사용하면 ManagedInjector 라이브러리를 통해 원격 프로세스에 .NET 어셈블리를 주입할 수 있습니다. 이렇게 하려면 프로세스의 _pid_와 주입할 _exe_를 지정해야 합니다. 어셈블리가 주입되면 특정 메서드를 호출하여 활성화할 수 있습니다. 메서드를 식별하는 규칙은 ManagedInjector 프로젝트에서 상속되며 다음과 같습니다:
예를 들어, pid가 _1234_인 프로세스에 어셈블리 _InjectedAssembly_를 주입하려면 다음 명령으로 _Shed_를 실행합니다:
shed.exe --pid 1234 --exe InjectedAssembly.dll --inject
--method 옵션을 사용하면 _InjectedAssembly.exe_에서 호출할 메서드를 지정할 수 있습니다.
실행 예시는 아래와 같습니다:

기본적으로 _Shed_는 힙과 모듈을 모두 덤프합니다. 둘 중 하나만 원한다면 --dump-heap 옵션을 지정하여 힙의 객체만 덤프하거나 --dump-modules 옵션을 지정하여 모듈만 덤프하세요.
힙을 덤프하면 분석에 엄격하게 유용하지 않은 많은 정보가 생성될 수 있습니다. 두 개의 파일을 사용하여 필터링할 수 있습니다:
blacklist.txt 이 파일은 로깅되지 않아야 하는 형식 이름 접두사를 포함합니다.
whitelist.txt 이 파일은 블랙리스트에 포함되어 있어도 로깅되어야 하는 형식 이름 접두사를 포함합니다.
예를 들어, 모든 System.IO 네임스페이스를 필터링하면서 System.IO.MemoryStream을 로깅하려면 첫 번째 값을 blacklist.txt에, 두 번째 값을 whitelist.txt에 추가하면 됩니다.
Examples 폴더에는 _Shed_를 테스트하는 데 사용할 수 있는 세 가지 프로젝트가 있습니다. 예시:
Shed.exe --exe ..\Examples\ConfigurationSample\ConfigurationSample.exe
분석이 완료되면 _Shed_는 결과를 찾을 수 있는 위치를 출력합니다. 아래와 같이 표시됩니다:
[+] Result saved to C:\Shed\Result\7800
Visual Studio가 설치되어 있으면 build.bat 배치 파일을 실행하기만 하면 됩니다. 그러면 빌드 폴더 내에 zip 파일이 생성됩니다.
Copyright (C) 2017 Antonio Parata - @s4tan
라이선스: GNU General Public License, 버전 2 이상; 자세한 내용은 이 아카이브에 포함된 LICENSE를 참조하십시오.