안녕하세요! 보안 꿈나무, 그리고 현직자 여러분 👋 오늘은 "생성형 AI를 활용한 악성코드 분석" 과정의 첫 번째 시간, 분석 환경 구축 편입니다.
"악성코드 분석... 어셈블리어 까막눈인데 어떡하죠? 😭" 걱정 마세요! 이제 우리에겐 든든한 AI 조수가 있잖아요. 복잡한 기계어를 사람이 읽기 쉬운 언어로 번역해주고, 이 코드가 무슨 짓(?)을 하려는지 설명까지 해주는 꿈의 환경!
Ghidra(기드라) 와 LLM(ChatGPT) 을 연동하여 나만의 AI 분석 랩(Lab) 을 만드는 방법을 A to Z로 알려드릴게요. 🚀

1. 왜 보안에서 '생성형 AI' 인가요? 🤔
악성코드 분석, 특히 리버스 엔지니어링(Reverse Engineering) 은 진입 장벽이 매우 높습니다. 하지만 LLM(Large Language Model)이 등장하면서 판도가 바뀌었습니다.
- 코드 설명(Explain): "이 함수가 무슨 역할을 해?"라고 물으면, 복잡한 어셈블리/C 코드를 분석해 "파일을 암호화하는 랜섬웨어 로직입니다"라고 요약해줍니다.
- 변수명 추천(Renaming): v1, arg_0 같은 의미 없는 변수명을 file_handle, encrypt_key 처럼 문맥에 맞게 바꿔줍니다.
- 난독화 해제(Deobfuscation): 꼬여있는 코드를 평문으로 풀어서 보여줍니다.
즉, 우리는 "AI에게 질문하는 법(Prompt Engineering)" 만 잘 익히면, 분석 시간을 획기적으로 줄일 수 있습니다! ⏳
2. 준비물 (Check List) ✅
실습을 위해 아래 도구들이 필요합니다.
- 가상머신 (VMware / VirtualBox): ⚠️ 필수! 악성코드를 다루니 절대 호스트(내 컴퓨터)에서 돌리지 마세요.
- 분석 도구 (Ghidra): NSA(미국 국가안보국)에서 만든 무료 리버스 엔지니어링 도구입니다.
- Python 3.x: 플러그인 구동을 위해 필요합니다.
- OpenAI API Key: ChatGPT를 도구와 연결하기 위한 열쇠입니다. (유료 계정 권장, 무료는 속도 제한 있음)
3. 상세 설치 가이드 🛠️
우리는 가장 대중적이고 무료인 Ghidra에 'Gepetto(제페토)' 라는 플러그인을 연동해볼 겁니다.
STEP 1. Java & Ghidra 설치
Ghidra는 Java 기반입니다.
- JDK 17 이상을 설치해 주세요. (OpenJDK 추천)
- Ghidra 공식 홈페이지에서 최신 버전을 다운로드하고 압축을 풉니다.
- ghidraRun.bat (윈도우) 또는 ghidraRun (리눅스/맥)을 실행해 정상 작동하는지 확인합니다.
STEP 2. Gepetto 플러그인 다운로드
Gepetto는 Ghidra에서 보여주는 코드를 OpenAI GPT 모델에 보내서 설명을 받아오는 파이썬 스크립트입니다.
- GitHub 저장소 방문: https://github.com/JusticeRage/Gepetto
- Code > Download ZIP을 눌러 다운로드하거나 git clone 합니다.
- 압축을 풀면 나오는 .py 파일들이 중요합니다.
STEP 3. Ghidra에 스크립트 등록하기
이제 Ghidra에게 "나 이 스크립트 쓸 거야"라고 알려줘야 합니다.
- Ghidra 실행 -> CodeBrowser (아무 파일이나 열어서 분석 화면 진입)
- 상단 메뉴의 Window -> Script Manager 클릭
- Script Manager 우측 상단의 'Script Directories' 아이콘(폴더 모양 리스트) 클릭
- [+] 버튼을 누르고, 방금 다운로드한 Gepetto 폴더 경로를 추가합니다.
- 검색창에 gepetto를 쳤을 때 스크립트가 보이면 성공! 🎉
STEP 4. OpenAI API Key 설정 🔑
GPT에게 질문하려면 돈(토큰)을 내야겠죠? API 키를 연결합니다.
- OpenAI Platform에 접속해서 API Key를 발급받습니다. (sk-로 시작하는 긴 문자열)
- 방법 A (환경변수): 시스템 환경변수에 OPENAI_API_KEY라는 이름으로 키 값을 등록합니다.
- 방법 B (스크립트 직접 수정): gepetto.py 파일을 메모장으로 열어 API_KEY = "여기에_키_입력" 부분을 찾아 넣습니다. (보안상 환경변수 추천!)
4. 실전 테스트: AI야, 분석을 부탁해! 🧪
자, 이제 환경 설정은 끝났습니다. 실제로 잘 되는지 볼까요?
- 분석할 exe 파일(또는 실습용 crackme)을 Ghidra에 올립니다.
- Auto Analyze가 끝나면, Decompiler 창에 C언어 비슷한 코드가 보일 겁니다.
- 해석이 안 되는 어려운 함수를 클릭해 커서를 둡니다.
- 단축키(설정했다면)를 누르거나, Script Manager에서 gepetto.py를 더블 클릭!
- (두근두근) 잠시 후...
🖥️ [Gepetto Output] "이 함수는 입력된 문자열의 길이를 확인하고, 특정 XOR 연산을 수행하여 키 값과 비교하는 루틴입니다. 전형적인 패스워드 검증 로직으로 보입니다."
와! 🤩 주석(Comment) 창에 AI가 분석한 내용이 자동으로 달립니다. 이제 우리는 어셈블리어를 한 줄 한 줄 해석하느라 머리 싸맬 필요 없이, AI가 요약해준 큰 그림을 보고 핵심 로직에만 집중하면 됩니다.
5. 주의사항 및 꿀팁 🍯
- 🔒 데이터 유출 주의: 회사 내부의 민감한 소스코드나 악성코드를 함부로 퍼블릭 LLM(OpenAI 등)에 올리면 안 됩니다! (실무에서는 로컬 LLM이나 엔터프라이즈 버전을 씁니다.)
- 💸 비용 관리: API는 사용할 때마다 비용이 듭니다. Usage limit을 꼭 설정해두세요.
- 🤖 맹신 금지: AI는 가끔 거짓말(Hallucination)을 합니다. AI가 "이건 안전한 파일입니다"라고 해도, 반드시 분석가인 여러분이 교차 검증을 해야 합니다.
마치며 🎁
오늘 우리는 Ghidra + LLM 환경을 구축하며 '아이언맨의 자비스'를 얻었습니다. 내일부터 진행될 2일 차 실습부터는 이 환경을 활용해 실제 랜섬웨어와 난독화 스크립트를 분석해볼 예정입니다.
분석 속도가 10배 빨라지는 경험, 기대해 주세요! 🔥
질문이 있다면 댓글로 남겨주세요!
'일반IT > IT보안' 카테고리의 다른 글
| [실습] AI에게 "제대로" 질문하는 법! 🗣️ 악성코드 분석을 위한 프롬프트 엔지니어링 A to Z (0) | 2025.12.11 |
|---|---|
| [실습] 내 생애 첫 리버스 엔지니어링! 🧑💻 'Hello World'를 기드라(Ghidra)로 뜯어보고 AI에게 물어보자 (0) | 2025.12.11 |
| 🚨 [속보] 2025년 11월, 드디어 공개된 'OWASP Top 10 2025' 완벽 분석! (0) | 2025.12.11 |
| [Windows Security] 윈도우 일반 유저(Domain User)의 권한, 정말 '아무것도' 못할까? (Default Deny의 오해와 진실) (0) | 2025.11.23 |
| 수천 개 에이전트, 더 이상 SSH로 접속하지 마세요! 🤫 (OpAMP 완전 정복) (0) | 2025.11.12 |