
Python 기반 도구로, PIC C로부터 셸코드를 생성합니다.
SHGenOB는 C로 작성된 위치 독립 코드(PIC)에서 셸코드를 생성하도록 설계된 Python 기반 도구입니다. C 코드 컴파일, .text 섹션 추출, 그리고 선택적으로 XOR 암호화를 사용하여 생성된 셸코드를 암호화하는 과정을 자동화합니다.
이 프로젝트는 전적으로 hasherezade의 이 문서를 기반으로 합니다.
SHGenOB 사용자를 위한 중요 참고 사항: 이 셸코드 생성 도구가 올바르게 작동하려면 입력 파일의 C 코드가 위치 독립 코드(PIC)로 작성되어야 합니다. 이 도구는 제공된 코드가 아래 설명된 PIC 원칙과 특성을 준수한다고 가정합니다.
위치 독립 코드(PIC)는 절대 메모리 주소에 관계없이 실행될 수 있는 기계어 코드 유형입니다. 이 특성은 PIC를 셸코드, 공유 라이브러리 및 특정 유형의 악성 코드를 생성하는 데 특히 유용하게 만듭니다. PIC의 주요 기능은 다음과 같습니다:
PIC는 코드의 정확한 로드 주소를 미리 알 수 없는 시나리오에서 필수적이며, 이는 셸코드 개발 및 시스템 프로그래밍의 특정 영역에서 중요한 개념입니다. SHGenOB를 사용할 때 입력 C 코드가 이러한 PIC 원칙을 따르도록 하여 효과적이고 신뢰할 수 있는 셸코드를 생성하십시오.
pip install pefile argparse
다음 구문으로 명령줄에서 스크립트 실행:
python shgenob.py --code-file <path_to_c_file> [--masm-file <path_to_masm_file>] [--debug] [--xor-key <key>]
인수:
--code-file 또는 -cf: (필수) PIC 코드가 포함된 main.c 파일의 경로--masm-file 또는 -mf: (선택 사항) 셸코드에 추가 어셈블리 로직을 포함하기 위한 외부 .masm 파일의 경로--debug 또는 -d: (선택 사항) 디버그 모드 활성화 (중간 파일 정리 생략)--xor-key 또는 -xk: (선택 사항) 셸코드 암호화를 위한 XOR 키 (형식: AA,BB,CC)예제:
# Basic usage
python shgenob.py --code-file main.c
# With external MASM file
python shgenob.py --code-file main.c --masm-file custom_logic.masm
# With all options
python shgenob.py --code-file main.c --masm-file custom_logic.masm --debug --xor-key AA,BB,CC
save_to_file(content, filename): 주어진 내용을 현재 디렉터리의 파일에 저장합니다.cleanup(): 현재 디렉터리의 중간 파일(.asm, .exe, .obj, .lnk)을 삭제합니다.xor_encrypt(shellcode, key): 제공된 키를 사용하여 XOR로 셸코드를 암호화합니다.insert_shellcode_into_loader(formatted_shellcode, loader_file): 로더 템플릿에 셸코드를 삽입합니다.extract_text_section(file_path, key): PE 파일에서 .text 섹션을 추출하고 선택적으로 암호화합니다.find_file(root_dir, file_name): 주어진 디렉터리와 그 하위 디렉터리에서 파일을 검색합니다.run_command_with_vcvars(command, vcvars_path): Visual Studio 환경 변수가 설정된 상태에서 명령을 실행합니다.compile_cpp_file(cpp_file, vcvars_path, output_exe): Visual Studio 컴파일러를 사용하여 C++ 파일을 컴파일합니다.modify_asm_file(asm_file): 셸코드 호환성을 위해 생성된 어셈블리 파일을 수정합니다.main(cpp_file, args): 셸코드 생성 과정을 조율하는 메인 함수입니다.--debug 플래그를 사용하여 정리 과정을 건너뛰고 중간 파일을 검사할 수 있습니다. 이는 문제 해결 및 셸코드 생성 과정 이해에 유용합니다.
SHGenOB를 개선하기 위한 기여를 환영합니다. 다음 단계를 따라주세요: