← 모든 글

AI 악성코드 분석에는 증거 묶음이 필요합니다

Zane St. John은 저렴한 Android 프로젝터를 구매한 뒤 의심스러운 DNS 트래픽을 발견했고, 기기에 미리 설치된 앱을 살펴보기 위해 Claude Code을 리버스 엔지니어링 보조 도구로 사용했습니다.1

흥미로운 점은 AI 에이전트가 악성코드 분석을 도왔다는 사실이 아닙니다. 그런 주장은 곧 흔해질 것입니다. 정말 중요한 부분은 결과물의 형태입니다. 사람이 직접 검토할 수 있는 관찰된 네트워크 동작, 패키지 이름, 디컴파일된 코드 경로, 명령어 출력, 메모, 지표가 있어야 합니다. 에이전트를 활용한 악성코드 분석은 답변처럼 보일 때가 아니라 사건 기록처럼 보일 때 비로소 신뢰할 수 있습니다.

AI 악성코드 분석에는 증거 묶음이 필요합니다. 에이전트는 언패킹, 디컴파일, 검색, 요약, 가설 생성을 빠르게 만들 수 있습니다. 하지만 분석가가 결론을 믿기 전에는 해시, 도구 버전, 명령어, 추출된 지표, 소스 경로, 불확실성 표시, 주장과 증거의 연결 경로가 필요합니다.

요약

Microsoft Research는 Project Ire를 소프트웨어를 리버스 엔지니어링하고 증거 사슬을 만든 뒤, 검증기가 악성코드 판정에 충분한 근거가 있는지 판단하는 자율 악성코드 분류 에이전트로 설명합니다.2 Zane의 Android 프로젝터 조사는 같은 패턴을 더 작은 규모에서 보여줍니다. 에이전트는 개인 분석가가 APK, 로그, 문자열, 의심스러운 코드 경로를 훑어 나가도록 도울 수 있습니다.1

제품 관점의 안전한 교훈은 좁고 명확합니다. AI 악성코드 분석가는 권위자가 아니라 작업대로 다루어야 합니다. 작업대는 증거를 추출하고, 정리하고, 연결할 수 있습니다. 하지만 실제 인프라에 접속하거나, 익스플로잇 클라이언트를 작성하거나, 일반 워크스테이션에서 알 수 없는 페이로드를 실행하거나, 영향에 대한 인간의 판단을 대체해서는 안 됩니다. 쓸모 있는 결과물은 검토자가 재현할 수 있는 증거 묶음입니다.

핵심 요점

보안 팀을 위해: - 에이전트에게 판정이 아니라 증거 묶음을 요구하세요. - 샘플 식별 정보, 명령어 로그, 도구 버전, 추출된 지표, 주장의 근거를 함께 보관하세요. - 동적 실행, 네트워크 접속, 자격 증명이 포함된 분석은 모두 사람의 승인을 먼저 받도록 하세요.

에이전트 개발자를 위해: - 악성코드 분석 흐름은 기본적으로 읽기 전용 정적 분석으로 시작하세요. - 추출, 가설, 검증, 보고를 별도 단계로 분리하세요. - 사람이 전체 과정을 감사할 수 있도록 원본 산출물과 소스 위치를 보존하세요.

제품 팀을 위해: - “자율 악성코드 분석”을 마법처럼 판매하지 마세요. - 에이전트가 무엇을 살펴봤고, 무엇을 추론했으며, 무엇을 검증하지 못했고, 사람이 여전히 무엇을 결정해야 하는지 보여 주세요. - 극적인 대시보드보다 검토용 증거 묶음을 먼저 만드세요.

Android 프로젝터 사례가 증명하는 것

St. John의 조사는 관찰된 동작에서 출발했습니다. 프로젝터가 정상적으로 사용되기 전부터 DNS 요청을 보냈던 것입니다.1 이 점이 중요합니다. 의심의 출처는 모델이 아니라 기기였습니다. 에이전트는 분석가가 이미 조사할 만한 질문을 가진 뒤에 투입되었습니다.

그다음 작업 흐름은 일반적인 리버스 엔지니어링 표면을 따라 진행되었습니다.

표면 중요한 이유
DNS 관찰 사용자가 요청하기 전에 기기가 통신하고 있음을 보여 주었습니다.
Android 패키지 이름 미리 설치된 앱 중 어떤 앱을 살펴봐야 하는지 좁히는 데 도움이 되었습니다.
APK 디컴파일 번들된 코드를 검색 가능한 소스와 비슷한 출력으로 바꾸었습니다.
문자열과 엔드포인트 설정, 네트워크 목적지, 업데이트 동작을 드러냈습니다.
메모와 요약 조사가 원본 파일 더미로 무너지는 것을 막았습니다.

이 글은 adbjadx 같은 일반적인 Android 리버스 엔지니어링 도구를 언급합니다.1 이런 도구가 결론을 참으로 만들어 주지는 않습니다. 대신 산출물을 검토 가능한 형태로 만듭니다. jadx는 자신을 Android Dex와 APK 파일을 Java 소스로 변환하고 Android 리소스를 디코드할 수 있는 CLI 및 GUI 디컴파일러로 설명합니다.3 Apktool은 manifest, resources, smali, 재빌드 작업 흐름을 포함해 Android APK 파일을 리버스 엔지니어링하는 도구라고 설명합니다.4

에이전트의 장점은 중간 지점에 있습니다. 낯선 패키지를 검색하고, 코드를 요약하고, 살펴볼 가능성이 높은 영역을 제안하고, 할 일 목록을 유지할 수 있습니다. 그래도 분석가는 각 주장을 원본 산출물과 대조해 검증해야 합니다.

AI는 리버스 엔지니어링을 사건 관리로 바꿉니다

전통적인 악성코드 분석도 이미 사건 기록을 만듭니다. 그 기록에는 해시, 샘플 출처, 문자열, 도메인, IP 주소, 뮤텍스, 레지스트리 키, 파일 경로, 스크린샷, 디스어셈블리 메모, 격리 환경 출력, 최종 판정이 포함될 수 있습니다.

에이전트는 이 작업의 속도와 양을 바꿉니다. 에이전트는 한 명의 분석가가 직접 입력하는 것보다 더 많은 파일을 읽고, 더 많은 메모를 쓰고, 더 많은 가설을 만들 수 있습니다. 하지만 더 강한 출력 계약이 없다면 그 속도는 신뢰 문제를 만듭니다. 확신에 찬 요약은 잘못된 추론, 놓친 분기, 환각으로 만들어진 API 이름을 가릴 수 있습니다.

Microsoft의 Project Ire는 더 나은 형태를 가리킵니다. Microsoft는 이 시스템이 소프트웨어를 자율적으로 분석하고 분류하며, 발견 사항을 뒷받침하는 증거 사슬을 만든다고 말합니다.2 이 설계에는 리버스 엔지니어링 도구와 함께 증거가 판정을 뒷받침하는지 확인하는 검증기가 포함됩니다.2 여기서 중요한 것은 브랜드 이름보다 검증기라는 아이디어입니다. 악성코드 분석에는 결론을 유창하게 말하는 화자만이 아니라, 증거를 따로 판단하는 심판이 필요합니다.

작은 작업 흐름에서도 같은 분리를 사용하세요.

단계 에이전트 역할 사람 또는 정책 관문
확보 샘플 출처와 해시를 기록합니다. 권한과 격리를 확인합니다.
추출 정적 산출물을 언패킹합니다. 도구 체인과 샘플 처리 방식을 승인합니다.
검사 코드, manifest, 문자열, 리소스를 검색합니다. 소스 위치를 확인합니다.
가설 의심스러운 동작과 위험을 제안합니다. 뒷받침하는 증거를 요구합니다.
검증 각 주장을 산출물에 연결합니다. 근거 없는 주장을 거부합니다.
보고 지표와 영향 메모를 작성합니다. 조치와 공개 여부를 결정합니다.

에이전트는 많은 일을 할 수 있습니다. 무엇을 믿을 만한지 결정하는 것은 관문입니다.

Android에는 유용한 정적 표면이 있습니다

Android 악성코드 분석에는 실용적인 장점이 있습니다. 앱을 실행하기 전에도 APK가 여러 정적 표면을 드러내기 때문입니다.

Android 보안 문서는 평문 통신, 동적 코드 로딩, 안전하지 않은 브로드캐스트 리시버, 하드코딩된 비밀값, 권한 관련 실수 같은 위험 범주를 제시합니다.5 MITRE ATT&CK for Mobile에는 Broadcast Receivers와 실행 중 새 코드 다운로드 같은 기법이 포함되어 있어, 분석가가 관찰된 동작을 공격자 전술에 연결할 때 사용할 어휘를 제공합니다.6

그래서 정적 분석을 우선하는 증거 묶음은 가치가 있습니다.

Android 산출물 캡처해야 할 증거
APK 해시 SHA-256, 출처, 수집일, 파일 이름.
Manifest 패키지 이름, 권한, 서비스, 리시버, 프로바이더, 노출된 컴포넌트, SDK 대상.
디컴파일된 코드 주장 주변의 파일 경로, 클래스, 메서드, 줄 또는 심볼.
리소스 URL, 도메인, API 경로, 설정값, 인증서, 에셋.
네이티브 라이브러리 라이브러리 이름, 아키텍처, 내보낸 심볼, 언패킹 메모.
네트워크 관찰 관찰된 도메인 또는 IP, 타임스탬프, 도구, 접속이 수동으로 발생했는지 능동으로 발생했는지.
동작 매핑 증거가 뒷받침할 때만 ATT&CK Mobile 기법.
불확실성 에이전트가 살펴보지 않았거나 증명하지 못한 것.

이 표는 중요한 실수를 피합니다. 모델에게 먼저 “악성코드인지 아닌지” 결정하라고 요구하지 않습니다. 나중에 판정을 검토 가능하게 만들 증거를 보존하라고 요구합니다.

증거 묶음

쓸모 있는 AI 악성코드 분석 묶음은 예측 가능한 형태를 가져야 합니다.

섹션 필수 내용
범위 누가 분석을 승인했는지, 어떤 샘플이나 기기를 조사했는지, 어떤 행동이 금지되었는지.
샘플 식별 정보 해시, 파일 이름, 크기, 타임스탬프, 소스 경로, 보관 이력 메모.
도구 체인 도구 이름, 버전, 명령줄, 환경 경계.
정적 발견 사항 Manifest 사실, 패키지 이름, 의심스러운 문자열, 엔드포인트, 리소스, 코드 위치.
동적 발견 사항 승인된 경우에만: 환경, 네트워크 격리, 로그, 스크린샷, 관찰된 동작.
지표 도메인, IP 주소, 패키지 이름, 파일 경로, 인증서 데이터, 기타 관찰 가능한 산출물.
주장 지도 각 결론과 그것을 뒷받침하는 정확한 산출물의 연결.
미검증 작업 언패킹하지 않은 샘플, 따라가지 않은 코드 경로, 재현하지 못한 네트워크 동작, 가정.
권장 조치 차단, 모니터링, 제거, 격상, 공개, 분석 지속 여부와 신뢰도.

주장 지도가 이 묶음의 핵심입니다.

주장 증거 신뢰도
앱이 동적 코드 로딩을 사용합니다 디컴파일된 코드 경로와 Android 위험 범주 인용. 동적 동작을 재현하기 전까지는 중간.
앱이 의심스러운 도메인에 접속합니다 수동 DNS 관찰과 문자열 또는 설정 참조. 두 출처가 일치하면 높음.
앱이 리시버를 통해 지속성을 가집니다 Manifest 리시버와 부팅 또는 시스템 브로드캐스트를 처리하는 코드 경로. 실험실에서 관찰하기 전까지는 중간.
앱이 악성입니다 여러 근거 있는 동작, 맥락, 사람의 검토. 모델 요약만으로는 절대 불가.

마지막 행은 분석가를 보호합니다. 악성코드 판정에는 결과가 따릅니다. 오탐은 공급업체에 피해를 주거나 사고 대응을 혼란스럽게 할 수 있습니다. 미탐은 사용자를 위험에 노출할 수 있습니다. 모델이 증거를 건너뛰는 지름길을 가져서는 안 됩니다.

에이전트가 거부해야 하는 것

악성코드 작업에는 목적이 방어적일 때도 거부 경계가 필요합니다.

에이전트는 다음 작업을 수행하기 전에 거부하거나 명시적인 사람의 승인을 요구해야 합니다.

  • 실제 명령제어 인프라에 접속하기;
  • 의심되는 백도어나 업데이터용 클라이언트를 작성하기;
  • 공격자가 제어하는 인프라에서 2단계 페이로드를 다운로드하기;
  • 격리된 실험실 밖에서 알 수 없는 샘플을 실행하기;
  • 분석 중 실제 사용자 자격 증명, 개인 계정, 운영 네트워크를 사용하기;
  • 책임 있는 공개 전에 피해자를 식별할 수 있는 실제 지표를 게시하기;
  • 방어적 조사를 익스플로잇 지침으로 바꾸기.

OpenAI의 로컬 셸 문서는 에이전트가 임의의 셸 명령을 실행하도록 허용하는 일이 위험할 수 있다고 경고하며, 명령을 셸로 전달하기 전에 격리 환경이나 엄격한 허용 및 거부 목록을 권장합니다.7 Anthropic의 Claude Code 모범 사례 가이드는 에이전트 작업에서 검증 기준과 맥락 관리를 강조합니다.8 악성코드 분석에는 둘 다 필요합니다. 행동 전에는 명령어 제한이 필요하고, 믿기 전에는 증거 제한이 필요합니다.

거부 경계는 작업 지시 자체에 들어가야 합니다.

Analyze this APK statically.
Do not execute it.
Do not contact remote infrastructure.
Do not write exploit or client code.
Return only evidence with file paths, commands, and confidence labels.
Mark every unsupported claim as unverified.

이런 지시가 작업 흐름을 그 자체로 안전하게 만들지는 않습니다. 하지만 자동 검사 장치, 격리 환경, 검토자가 실제로 강제할 수 있는 구체적인 기준을 제공합니다.

판정은 여전히 사람이 책임집니다

AI 에이전트는 악성코드 분석 작업 회차에서 몇 시간을 아껴 줄 수 있습니다. APK 더미에서 의심스러운 패키지의 짧은 목록으로 빠르게 이동할 수 있습니다. 클래스를 요약하고, intent 필터를 풀어 보고, 설정 문자열을 식별하고, 보고서 초안을 만들 수 있습니다. 이런 이점은 중요합니다.

하지만 에이전트가 판정을 책임져서는 안 됩니다.

분석가가 책임지는 것은 다음과 같습니다.

  • 샘플을 분석할 권한;
  • 무엇이든 동적으로 실행할지에 대한 결정;
  • 의도와 영향의 해석;
  • 영향을 받는 공급업체, 사용자, 플랫폼과의 커뮤니케이션;
  • 복구와 공개에 대한 결정;
  • 보고서의 최종 문구.

이렇게 나누면 에이전트는 유용한 도구로 남습니다. 모델은 지루한 연결 작업을 맡고, 사람은 윤리적, 법적, 맥락적 책임을 유지합니다.

작업 흐름을 만드는 방법

작은 정적 분석 루프에서 시작하세요.

  1. 샘플의 해시를 만들고 출처를 기록합니다.
  2. Manifest, 리소스, 문자열, 디컴파일된 코드를 읽기 전용 작업 디렉터리로 추출합니다.
  3. 에이전트에게 소스 위치가 포함된 발견 사항 목록을 만들게 합니다.
  4. 두 번째 검토 단계에서 각 발견 사항에 이의를 제기하고 근거 없는 주장을 표시하게 합니다.
  5. 증거 묶음을 만듭니다.
  6. 이 묶음이 동적 실험실 분석을 정당화하는지 결정합니다.

에이전트 프롬프트는 구조화된 출력을 요구해야 합니다.

For every finding, include:
- claim
- artifact path
- command that produced the artifact
- source excerpt or symbol
- confidence
- what would falsify the claim
- whether dynamic analysis is required

이 출력은 “프로젝터에 악성코드가 있습니다”보다 덜 흥미롭게 보입니다. 하지만 훨씬 더 쓸모 있습니다.

증거 관문은 여기에 바로 적용됩니다. 증거 없는 주장은 최종 답변으로 넘어가면 안 됩니다. 검토 묶음이 새로운 최종 답변입니다도 마찬가지입니다. 전달물은 산문 요약이 아니라, 다른 사람이 작업을 검증할 수 있게 하는 묶음입니다.

자주 묻는 질문

AI 에이전트가 악성코드 분석을 할 수 있나요?

네, 제한 안에서는 가능합니다. 에이전트는 정적 분석, 요약, 디컴파일 결과 탐색, 지표 추출, 보고서 초안 작성에 도움이 될 수 있습니다. 하지만 재현 가능한 증거와 사람의 검토 없이 악성코드 판정의 최종 권위자가 되어서는 안 됩니다.

악성코드에 Claude Code이나 Codex를 사용해도 안전한가요?

통제된 방어적 작업 흐름 안에서만 가능합니다. 알 수 없는 샘플을 일반 워크스테이션에서 실행하지 말고, 실제 인프라에 접속하지 말고, 에이전트에게 자격 증명이나 제한 없는 셸 및 네트워크 접근 권한을 주지 마세요. 격리된 작업 디렉터리에서 하는 정적 분석이 더 안전한 출발점입니다.

악성코드 분석 증거 묶음에는 무엇이 포함되어야 하나요?

최소한 해시, 샘플 출처, 도구 버전, 명령어, manifest 사실, 추출된 지표, 코드 위치, 주장과 증거의 연결 지도, 신뢰도 표시, 미검증 작업 목록이 포함되어야 합니다.

AI 판정은 증거로 볼 수 있나요?

아니요. 모델의 문장은 해석입니다. 증거는 산출물에서 나옵니다. 해시, 로그, 명령어, 코드 경로, manifest, 관찰된 네트워크 동작, 재현 가능한 분석 단계가 증거입니다.

에이전트가 발견 사항을 MITRE ATT&CK에 매핑해야 하나요?

네, 증거가 그 매핑을 뒷받침할 때만 그렇습니다. 산출물 근거 없는 기법 라벨은 장식이 됩니다. ATT&CK Mobile은 증명의 대체물이 아니라 어휘로 사용하세요.6

마무리

AI는 악성코드 분석에서 분석가를 제거하지 않습니다. 대신 분석가가 무엇을 요구해야 하는지를 바꿉니다.

약한 출력은 확신에 찬 판정입니다. 강한 출력은 재현 가능한 묶음입니다. 샘플 식별 정보, 명령어, 산출물, 지표, 주장의 근거, 불확실성, 다음 조치가 담겨 있어야 합니다.

에이전트는 리버스 엔지니어링을 더 빠르게 만들 수 있습니다. 증거 묶음은 그것을 신뢰할 수 있게 만듭니다.


참고 문헌


  1. Zane St. John, “Claude Code으로 Android 악성코드 리버스 엔지니어링하기,” 2026년 2월 5일 게시. Android 프로젝터 사례, 의심스러운 DNS라는 출발점, adbjadx 사용, Claude Code의 도움을 받은 APK 검사, 방어적 리버스 엔지니어링 작업 흐름의 형태에 대한 출처입니다. 

  2. Microsoft Research, “Project Ire: 대규모 악성코드 자율 식별,” 2025년 8월 게시. Project Ire의 자율 리버스 엔지니어링 프레이밍, 증거 사슬 설계, 도구 사용, 검증 단계에 대한 출처입니다. 

  3. jadx project, “jadx README,” GitHub 저장소 문서, 2026년 5월 18일 확인. jadx가 CLI와 GUI 사용을 지원하는 Dex-to-Java 디컴파일러이며 Android APK와 리소스를 지원한다는 설명의 출처입니다. 

  4. Apktool, “Apktool,” 공식 문서, 2026년 5월 18일 확인. Apktool이 Android APK 파일을 리버스 엔지니어링하는 도구이며 manifest, resource, smali 디코딩 작업 흐름을 제공한다는 설명의 출처입니다. 

  5. Android Developers, “앱의 보안 위험 완화하기,” 2026년 5월 18일 확인. 평문 통신, 동적 코드 로딩, 하드코딩된 비밀값, 안전하지 않은 브로드캐스트 리시버를 포함한 Android 위험 범주의 출처입니다. 

  6. MITRE ATT&CK, “Mobile Matrix,” 2026년 5월 18일 확인. Broadcast Receivers와 실행 중 새 코드 다운로드를 포함한 ATT&CK Mobile 기법 어휘의 출처입니다. 

  7. OpenAI, “로컬 셸,” OpenAI API 문서, 2026년 5월 18일 확인. 에이전트가 셸 명령을 실행하기 전에 필요한 로컬 셸 위험 프레이밍과 격리 환경 또는 허용/거부 목록 지침의 출처입니다. 

  8. Anthropic, “Claude Code 모범 사례,” Claude Code 문서, 2026년 5월 18일 확인. 에이전트 분석 프레이밍에 사용된 맥락 창, 검증 기준, CLI 도구 작업 흐름 지침의 출처입니다. 

관련 게시물

포크 폭탄이 우리를 구했다

LiteLLM 공격자는 구현 과정에서 실수 하나를 저질렀어요. 그 실수가 47,000건의 설치를 46분 만에 발각시킨 유일한 이유였습니다.

4 분 소요

오픈 소스는 보안 경계가 아니에요

AI 취약점 발견에 관한 GDS 지침은 오픈 소스 보안의 핵심을 제대로 짚어요. 기본적으로 덜 숨기고, 더 빨리 고치며, 예외는 증거와 함께 명확히 밝혀야 해요.

8 분 소요

Ralph 루프: 자율 AI 에이전트를 밤새 운영하는 방법

중지 훅, 스폰 예산, 파일 시스템 메모리를 활용한 자율 에이전트 시스템을 구축했습니다. 실패 사례와 실제로 코드를 출시하게 된 과정을 공유합니다.

8 분 소요