본문 바로가기
일반IT/IT보안

[보안 스터디] 악성코드 분석, 이제 AI랑 같이 하자! 🤖 (Ghidra + ChatGPT 환경 구축 가이드)

by gasbugs 2025. 12. 11.

안녕하세요! 보안 꿈나무, 그리고 현직자 여러분 👋 오늘은 "생성형 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) ✅

실습을 위해 아래 도구들이 필요합니다.

  1. 가상머신 (VMware / VirtualBox): ⚠️ 필수! 악성코드를 다루니 절대 호스트(내 컴퓨터)에서 돌리지 마세요.
  2. 분석 도구 (Ghidra): NSA(미국 국가안보국)에서 만든 무료 리버스 엔지니어링 도구입니다.
  3. Python 3.x: 플러그인 구동을 위해 필요합니다.
  4. OpenAI API Key: ChatGPT를 도구와 연결하기 위한 열쇠입니다. (유료 계정 권장, 무료는 속도 제한 있음)

3. 상세 설치 가이드 🛠️

우리는 가장 대중적이고 무료인 Ghidra'Gepetto(제페토)' 라는 플러그인을 연동해볼 겁니다.

STEP 1. Java & Ghidra 설치

Ghidra는 Java 기반입니다.

  1. JDK 17 이상을 설치해 주세요. (OpenJDK 추천)
  2. Ghidra 공식 홈페이지에서 최신 버전을 다운로드하고 압축을 풉니다.
  3. ghidraRun.bat (윈도우) 또는 ghidraRun (리눅스/맥)을 실행해 정상 작동하는지 확인합니다.

STEP 2. Gepetto 플러그인 다운로드

Gepetto는 Ghidra에서 보여주는 코드를 OpenAI GPT 모델에 보내서 설명을 받아오는 파이썬 스크립트입니다.

  1. GitHub 저장소 방문: https://github.com/JusticeRage/Gepetto
  2. Code > Download ZIP을 눌러 다운로드하거나 git clone 합니다.
  3. 압축을 풀면 나오는 .py 파일들이 중요합니다.

STEP 3. Ghidra에 스크립트 등록하기

이제 Ghidra에게 "나 이 스크립트 쓸 거야"라고 알려줘야 합니다.

  1. Ghidra 실행 -> CodeBrowser (아무 파일이나 열어서 분석 화면 진입)
  2. 상단 메뉴의 Window -> Script Manager 클릭
  3. Script Manager 우측 상단의 'Script Directories' 아이콘(폴더 모양 리스트) 클릭
  4. [+] 버튼을 누르고, 방금 다운로드한 Gepetto 폴더 경로를 추가합니다.
  5. 검색창에 gepetto를 쳤을 때 스크립트가 보이면 성공! 🎉

STEP 4. OpenAI API Key 설정 🔑

GPT에게 질문하려면 돈(토큰)을 내야겠죠? API 키를 연결합니다.

  1. OpenAI Platform에 접속해서 API Key를 발급받습니다. (sk-로 시작하는 긴 문자열)
  2. 방법 A (환경변수): 시스템 환경변수에 OPENAI_API_KEY라는 이름으로 키 값을 등록합니다.
  3. 방법 B (스크립트 직접 수정): gepetto.py 파일을 메모장으로 열어 API_KEY = "여기에_키_입력" 부분을 찾아 넣습니다. (보안상 환경변수 추천!)

4. 실전 테스트: AI야, 분석을 부탁해! 🧪

자, 이제 환경 설정은 끝났습니다. 실제로 잘 되는지 볼까요?

  1. 분석할 exe 파일(또는 실습용 crackme)을 Ghidra에 올립니다.
  2. Auto Analyze가 끝나면, Decompiler 창에 C언어 비슷한 코드가 보일 겁니다.
  3. 해석이 안 되는 어려운 함수를 클릭해 커서를 둡니다.
  4. 단축키(설정했다면)를 누르거나, Script Manager에서 gepetto.py를 더블 클릭!
  5. (두근두근) 잠시 후...

🖥️ [Gepetto Output] "이 함수는 입력된 문자열의 길이를 확인하고, 특정 XOR 연산을 수행하여 키 값과 비교하는 루틴입니다. 전형적인 패스워드 검증 로직으로 보입니다."

와! 🤩 주석(Comment) 창에 AI가 분석한 내용이 자동으로 달립니다. 이제 우리는 어셈블리어를 한 줄 한 줄 해석하느라 머리 싸맬 필요 없이, AI가 요약해준 큰 그림을 보고 핵심 로직에만 집중하면 됩니다.


5. 주의사항 및 꿀팁 🍯

  • 🔒 데이터 유출 주의: 회사 내부의 민감한 소스코드나 악성코드를 함부로 퍼블릭 LLM(OpenAI 등)에 올리면 안 됩니다! (실무에서는 로컬 LLM이나 엔터프라이즈 버전을 씁니다.)
  • 💸 비용 관리: API는 사용할 때마다 비용이 듭니다. Usage limit을 꼭 설정해두세요.
  • 🤖 맹신 금지: AI는 가끔 거짓말(Hallucination)을 합니다. AI가 "이건 안전한 파일입니다"라고 해도, 반드시 분석가인 여러분이 교차 검증을 해야 합니다.

마치며 🎁

오늘 우리는 Ghidra + LLM 환경을 구축하며 '아이언맨의 자비스'를 얻었습니다. 내일부터 진행될 2일 차 실습부터는 이 환경을 활용해 실제 랜섬웨어난독화 스크립트를 분석해볼 예정입니다.

분석 속도가 10배 빨라지는 경험, 기대해 주세요! 🔥

질문이 있다면 댓글로 남겨주세요!