이 Ghidra 툴킷은 헤드리스 모드에서 Ghidra를 실행하는 것과 관련된 다양한 작업을 간소화하고 자동화하도록 설계된 포괄적인 도구 모음입니다. 이 툴킷은 Ghidra 내부 및 함께 실행될 수 있는 광범위한 스크립트를 제공하므로 사용자는 분석된 코드베이스에 대해 취약점 검색, ChatGPT를 사용한 의사 코드 주석 달기, 데이터 시각화를 통한 보고와 같은 작업을 수행할 수 있습니다. 이를 통해 사용자는 자신의 스크립트를 로드 및 저장하고 스크립트에 내장된 API와 상호 작용할 수 있습니다.
헤드리스 모드 자동화 : 이 툴킷을 사용하면 사용자가 헤드리스 모드에서 Ghidra를 원활하게 시작하고 실행할 수 있으므로 코드 분석 작업의 자동화된 일괄 처리가 가능합니다.
스크립트 저장소/관리 : 툴킷에는 Ghidra 내에서 실행할 수 있는 사전 구축된 스크립트 저장소가 포함되어 있습니다. 이러한 스크립트는 다양한 기능을 다루므로 사용자가 다양한 분석 및 조작 작업을 수행할 수 있습니다. 이를 통해 사용자는 자신의 스크립트를 로드하고 저장할 수 있으며 특정 분석 요구 사항에 대한 유연성과 사용자 정의 옵션을 제공합니다. 사용자는 스크립트 컬렉션을 쉽게 관리하고 구성할 수 있습니다.
유연한 입력 옵션 : 사용자는 툴킷을 활용하여 개별 파일이나 여러 파일이 포함된 전체 폴더를 분석할 수 있습니다. 이러한 유연성 덕분에 소규모 및 대규모 코드베이스 모두를 효율적으로 분석할 수 있습니다.
패턴 인식을 통한 취약점 검색 : 툴킷의 스크립트를 활용하여 분석 중인 코드베이스 내 잠재적인 취약점을 식별합니다. 이는 보안 연구원과 개발자가 보안 약점을 발견하고 사전에 해결하는 데 도움이 됩니다.
SemGrep을 사용한 취약점 검색 : 보안 연구원 0xdea와 그들이 만든 규칙 세트 덕분에 간단한 규칙과 SemGrep을 사용하여 C/C++ 의사 코드의 취약점을 탐지할 수 있습니다(github: https://github.com/0xdea/semgrep). -규칙)
자동 의사 코드 생성 : Ghidra의 헤드리스 모드 내에서 의사 코드를 자동으로 생성합니다. 이 기능은 수동 개입 없이 코드 논리를 이해하고 문서화하는 데 도움이 됩니다.
ChatGPT를 사용한 의사 코드 주석 달기 : ChatGPT를 활용하여 의사 코드 조각에 대해 인간과 유사한 주석을 생성함으로써 코드베이스의 가독성과 이해도를 높입니다. 이 기능은 코드 논리를 문서화하고 설명하는 데 도움이 됩니다.
보고 및 데이터 시각화 : 시각화를 통해 종합적인 보고서를 생성하여 분석 결과를 효과적으로 요약하고 제시합니다. 이 툴킷은 코드베이스의 패턴, 종속성 및 이상 현상을 식별하는 데 도움이 되는 데이터 시각화 기능을 제공합니다.
이 프로젝트를 사용하기 전에 다음 소프트웨어가 설치되어 있는지 확인하십시오.
Ghidra: 국가 안보국(National Security Agency)의 GitHub 저장소(https://github.com/NationalSecurityAgency/ghidra)에서 Ghidra를 다운로드할 수 있습니다.
Java: JDK(Java Development Kit) 버전 17 이상이 설치되어 있는지 확인하십시오. OpenJDK 웹사이트 @ https://openjdk.org/projects/jdk/17/ 에서 다운로드할 수 있습니다.
BinExport(선택 사항) Ghidra 확장 프로그램 설치 지침을 따르세요 https://github.com/google/binexport
SemGrep(선택 사항) 자세한 지침은 https://semgrep.dev/docs/getting-started/를 따르십시오.
위에서 언급한 필수 구성 요소를 설치합니다.
Github에서 직접 Sekiryu 릴리스를 다운로드하거나 pip install sekiryu
사용하세요.
스크립트를 사용하려면 실행하려는 옵션을 사용하여 바이너리에 대해 간단히 실행할 수 있습니다.
sekiryu [-F FILE][OPTIONS]
Ghidra (또는 다른 제품)를 사용하여 이진 분석을 수행하는 것은 상대적으로 느린 프로세스입니다. 따라서 이진 분석은 호스트 성능에 따라 몇 분 정도 걸릴 수 있습니다. 매우 큰 애플리케이션이나 대량의 바이너리 파일에 대해 Sekiryu를 실행하는 경우 기다릴 준비를 하십시오.
www.bushido-sec.com에서 데모 찾기
The "server.py" is basically built to allow scripts to interract with Ghidra each other and with the host system. An User can easily develop their own script, load and saved it in the script folder and use the known functions of the API to interract with Ghidra.
이를 사용하려면 사용자는 스크립트에서 xmlrpc를 가져와야 하며 예를 들어 다음과 같은 함수 proxy.send_data
호출해야 합니다.
send_data() - 사용자가 서버에 데이터를 보낼 수 있습니다. ("데이터"는 사전입니다)
recv_data() - 사용자가 서버로부터 데이터를 수신할 수 있도록 합니다. ("데이터"는 사전입니다)
request_GPT() - 사용자가 ChatGPT API를 통해 문자열 데이터를 보낼 수 있습니다.
스크립트는 /modules/scripts/ 폴더에 저장됩니다. 여기에 스크립트를 복사하기만 하면 됩니다. ghidra_pilot.py
파일에서 헤드리스 ghidra 스크립트 실행을 담당하는 다음 함수를 찾을 수 있습니다.
def exec_headless(file, script): """ ghidra의 헤드리스 분석 실행 """path = ghidra_path + 'analyzeHeadless'# 변수 설정tmp_folder = "/tmp/out"os.mkdir(tmp_folder) cmd = ' ' + tmp_folder + ' TMP_DIR -import'+ ' '+ 파일 + ' '+ "-postscript "+ 스크립트 +" -deleteProject"# 지정된 파일 및 스크립트로 ghidra 실행: p = subprocess.run([str(path + cmd)], shell=True, Capture_output=True) os.rmdir(tmp_folder) e: print(e) os.rmdir(tmp_folder)와 같은 KeyError 제외
사용법은 매우 간단합니다. 자신만의 스크립트를 만든 다음 ghidra_pilot.py
에 다음과 같은 함수를 추가하면 됩니다.
def yourfunction(file): try: # scriptscript 설정 = "modules/scripts/your_script.py"# 새 thread에서 exec_headless 함수를 시작합니다.thread = threading.Thread(target=exec_headless, args=(file, script)) thread.start () thread.join() e: print(str(e))와 같은 예외 제외
cli.py
파일은 명령줄 인터페이스를 담당하며 다음과 같은 인수와 명령을 추가할 수 있습니다.
analyze_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="도움말 메시지", action="store_true")
Scripts/SCRIPTS/SCRIIIIIPTS : 이 도구는 사용자가 자신의 스크립트를 쉽게 저장하고 실행할 수 있도록 하는 툴킷으로 설계되었습니다. 물론 모든 종류의 스크립트에 기여할 수 있다면(흥미로운 것은 무엇이든 승인됩니다!)
최적화 : 모든 종류의 최적화가 환영되며 매 릴리스마다 거의 자동으로 승인 및 배포됩니다. 몇 가지 좋은 점은 병렬 작업 개선, 코드 정리 및 전반적인 개선이 될 수 있습니다.
악성코드 분석 : 잘 모르는 부분이 큰 부분입니다. 기여하려는 모든 맬웨어 분석가는 아이디어, 스크립트를 제안하거나 프로젝트에서 직접 코드를 커밋할 수도 있습니다.
보고 : 저는 데이터 시각화 엔지니어가 아닙니다. 누구든지 이 부분을 개선하거나 기여할 의향이 있다면 매우 좋을 것입니다.
The xmlrpc.server module is not secure against maliciously constructed data. If you need to parse untrusted or unauthenticated data see XML vulnerabilities.
A lot of people encouraged me to push further on this tool and improve it. Without you all this project wouldn't have been the same so it's time for a proper shout-out: - @JeanBedoul @McProustinet @MilCashh @Aspeak @mrjay @Esbee|sandboxescaper @Rosen @Cyb3rops @RussianPanda @Dr4k0nia - @Inversecos @Vs1m @djinn @corelanc0d3r @ramishaath @chompie1337 Thanks for your feedback, support, encouragement, test, ideas, time and care.
Bushido 보안에 대한 자세한 내용을 보려면 당사 웹사이트(https://www.bushido-sec.com/)를 방문하십시오.