
DrSemu - 샌드박스 기반 동적 행위 분석을 통한 악성코드 탐지 및 분류 도구
Dr.Semu는 격리된 환경에서 실행 파일을 실행하고, 프로세스의 동작을 모니터링하며, 사용자 또는 커뮤니티가 생성한 Dr.Semu 규칙에 기반하여 프로세스가 악성인지 여부를 탐지합니다.

[이 도구는 초기 개발 단계에 있습니다]
Dr.Semu를 사용하면 프로세스의 동적 동작을 기반으로 악성코드를 탐지하는 규칙을 만들 수 있습니다.
모든 작업은 사용자 모드에서 이루어집니다. Windows Projected File System (ProjFS)을 사용하여 가상 파일 시스템을 제공합니다. 레지스트리 리디렉션의 경우, 모든 레지스트리 하이브를 새 위치에 복제하고 모든 레지스트리 액세스를 리디렉션합니다.
다른 리디렉션(프로세스/객체 격리 등)에 대한 자세한 내용은 소스 코드를 참조하십시오.
Dr.Semu는 DynamoRIO(동적 계측 도구 플랫폼)를 사용하여 스레드가 사용자-커널 경계를 넘으려 할 때 이를 가로챕니다. 이는 SSDT를 후킹하는 것과 동일한 효과를 가지지만 사용자 모드에서 아무것도 후킹하지 않고 수행합니다.
이 단계에서 Dr.Semu는 가로채기에서 얻은 정보를 포함하는 JSON 파일을 생성합니다.
프로세스 종료 후, Dr.Semu 규칙에 기반하여 실행 파일이 악성코드로 탐지되는지 여부를 확인합니다.
이 규칙들은 Python 또는 LUA로 작성되며(dr_rules 아래에 위치), 가로채기의 동적 정보와 샘플의 정적 정보를 사용합니다. 다른 언어의 지원을 추가하는 것은 간단합니다.

예시 (Python): https://gist.github.com/secrary/ac89321b8a7bde998a6e3139be49eb72
예시 (Lua): https://gist.github.com/secrary/e16daf698d466136229dc417d7dbcfa3
PowerShell 창에서 ProjFS를 활성화하려면 다음을 사용하십시오:Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart
릴리즈 페이지에서 zip 파일을 다운로드하여 압축을 풉니다.
DynamoRIO를 다운로드하여 DrSemu 폴더에 압축을 풀고 dynamorio로 이름을 변경합니다.
Python 3 x64를 설치합니다.
DrSemu.exe --target file_path
DrSemu.exe --target files_directory
PowerShell 창에서 ProjFS를 활성화하려면 다음을 사용하십시오:Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart

Python 3 x64를 설치합니다.
DynamoRIO를 다운로드하여 bin 폴더에 압축을 풀고 dynamorio로 이름을 변경합니다.
pe-parser-library.lib 라이브러리 빌드:
DrSemu\shared_libs\pe_parse에서 VS 프로젝트 생성build 디렉토리(\shared_libs\pe_parse\build\pe-parser-library\Release\)에 32비트 라이브러리, build64에 64비트 라이브러리 빌드Multi-threaded (/MT)로 변경LauncherCLI를 시작 프로젝트로 설정
Windows 10, 버전 1809 (Windows Projected File System 때문)Windows 10, 버전 1809 (DynamoRIO는 Windows 10 버전을 1809까지 지원)