Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
how_to_become_a_malware_analyst — 악성코드 분석가가 되기 위한 큐레이션 가이드로, 필수 지식, 리버스 엔지니어링, 분석 도구, LLM 지원 학습을 실습과 자료와 함께 다룹니다. | Kitploit
도구/GitHubGitHub/pinksawtooth/how_to_become_a_malware_analyst
Memory ForensicsReverse EngineeringMalware AnalysisDigital ForensicsCTFBinary AnalysisLearning & EducationCurated ResourcesLearning Paths & Courses

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Labs & Practice
GitHubpinksawtooth/how_to_become_a_malware_analyst

how_to_become_a_malware_analyst

악성코드 분석가가 되기 위한 큐레이션 가이드로, 필수 지식, 리버스 엔지니어링, 분석 도구, LLM 지원 학습을 실습과 자료와 함께 다룹니다.

저장소 보기
2796202일 전Kitploit 검토 완료

멀웨어 분석가가 되기 위한 공부 방법(work-in-progress)

이것은 @PINKSAWTOOTH의 개인적인 견해이며, 반드시 당신에게 가장 좋은 방법이 아닐 수도 있습니다. 공부 방법의 한 예시로서 참고해 주시면 감사하겠습니다.

이것을 읽기 전에, 제가 존경하는 멀웨어 분석가 @hasherezade 님이 멀웨어 분석 공부를 어떻게 시작하면 좋을지 블로그에 정리하고 있습니다. 중복되는 부분이 있다고 생각하지만, 일독을 권장합니다. 또한, 아래 블로그는 영어 소스가 중심이므로, 가능한 한 일본어를 중심으로 한 소스를 소개하고 싶습니다.

  • https://hshrzd.wordpress.com/how-to-start/

[!NOTE]

2026년 추가: LLM 시대의 멀웨어 분석 학습

이 페이지를 쓰기 시작했던 당시는 LLM이나 AI Agent가 지금처럼 일상적으로 사용할 수 있는 시대가 아니었습니다. 2026년 현재, 멀웨어 분석이나 리버스 엔지니어링을 공부한다면 서적이나 웹상의 자료에 더해 LLM을 적극적으로 활용하는 것을 권장합니다. 특히 학습용 프로그램 작성, 코드나 어셈블리 설명, 분석, 분석 스크립트 작성, 분석 결과 정리 등에서 매우 유용합니다.

한편으로, 많은 분석 기술에서 LLM이 인간을 능가하는 장면이 늘어나고 있습니다. 그러나 그렇다고 해서 기초 지식이 불필요해진 것은 아닙니다. LLM의 출력을 이해하고, 자신 스스로 그 근거와 정확성을 확인하기 위해서는 전문 지식을 갖추고 있는 것이 중요합니다(그 작업이 의미 없어지는 날도 머지않았을지도 모르지만...). 본고에서는 LLM을 "답을 내는 장치"가 아니라 "함께 학습하는 교사, 분석 시의 조수"로서 활용하는 것을 전제로 하고 있습니다.

멀웨어 분석의 전제가 되는 지식

먼저, 멀웨어 분석의 전제가 되는 지식에 대해 간단히 설명합니다. 멀웨어 분석에 대해 배우기 전에, 최소한 컴퓨터 사이언스(계산기 과학)의 지식이 필요합니다.

  • 컴퓨터 아키텍처
  • 컴퓨터 네트워크
  • 운영체제
  • 프로그래밍 언어
  • 자료 구조와 알고리즘
  • etc...

이것들에 대해서는 대학이나 전문학교에서 이수하는 내용을 이해하고 있으면 좋을 것 같습니다. (어딘가의 대학 온라인 실러버스 등을 확인함으로써 더 구체적인 내용을 알 수 있을 것입니다.) 본고에서는 프로그래밍 언어나 컴퓨터 사이언스를 어떻게 배울지는 범위 밖으로 하지만, 다음이 추천 자료입니다.

  • 컴퓨터는 왜 움직이는가 알고 싶은 하드웨어 & 소프트웨어의 기초 지식
  • 프로그램은 왜 움직이는가 제3판 알고 싶은 프로그래밍의 기초 지식
  • 인텔® 64 및 IA-32 아키텍처 소프트웨어 개발자 매뉴얼 (최신)
  • IA-32 인텔® 아키텍처 소프트웨어 개발자 매뉴얼, 상권: 기본 아키텍처 (일본어: 구판)
  • IA-32 인텔® 아키텍처 소프트웨어 개발자 매뉴얼, 중권 A: 명령 세트 레퍼런스 A-M(일본어: 구판)
  • IA-32 인텔® 아키텍처 소프트웨어 개발자 매뉴얼, 중권 B: 명령 세트 레퍼런스 N-Z(일본어: 구판)
  • IA-32 인텔® 아키텍처 소프트웨어 개발자 매뉴얼, 하권: 시스템 프로그래밍 가이드(일본어: 구판)
  • 마스터링 TCP/IP 입문편(제6판)
  • CS50x
  • CS50.jp

멀웨어 분석에 필요한 지식

멀웨어 분석에 필요한 지식을 크게 다음 5가지로 나눕니다.

  • 멀웨어 분석 기술, 멀웨어의 동작, 악용하는 테크닉의 구현이나 실현 방법에 관한 지식
  • 리버스 엔지니어링 대상 프로그램 개발에 관한 지식
  • 리버스 엔지니어링에 관한 지식
  • 분석 도구에 관한 지식
  • LLM·분석 자동화에 관한 지식

멀웨어 분석 기술, 멀웨어의 동작, 악용하는 테크닉의 구현이나 실현 방법에 관한 지식

먼저 멀웨어란 무엇인가, 멀웨어 분석이란 무엇을 하는 작업인가를 배울 필요가 있습니다. 멀웨어 분석 전반에 대해 배우는 데 추천하는 자료, 서적을 소개합니다.

  • 시큐리티 캠프 전국대회 2015에서의 멀웨어 분석 강의
    • 나카츠루 님(@you0708)에 의한 시큐리티 캠프 전국대회 2015에서 개최된 멀웨어 분석 강의입니다.
  • 처음 하는 멀웨어 분석
    • 일본어로 멀웨어 분석 전반의 기초부터 발전적인 내용까지 다루고 있는 책입니다.
  • 리버스 엔지니어링 도구 Ghidra 실전 가이드
    • 저도 저자로 참여한 Ghidra를 사용한 정적 분석을 통해 멀웨어 구현을 배울 수 있는 책입니다.
  • 리버스 엔지니어링 입문 @IT 연재
    • 일본전신전화주식회사의 카와코야 님, 아오키 님, 이와무라 님에 의한 셸코드 분석을 해설한 기사입니다.
  • 애널라이징 멀웨어
    • 2010년 발행이라 내용은 오래되었지만, 어셈블리를 읽지 않는다는 제약으로 멀웨어 분석에 대해 다루고 있는 드문 책입니다.
  • MWS Cup
    • 정보처리학회 컴퓨터 시큐리티(CSEC) 연구회 산하의 MWS 조직위원회가 주최하는 멀웨어 분석 기술을 겨루는 콘테스트. 과거 문제 내용이나 해설이 공개되어 있어 참고가 됩니다.
  • CS6038/CS5138 Malware Analysis, UC
    • University of Cincinnati의 멀웨어 분석 강의 자료. 매년 내용이 갱신되고 있으며, 연습용 샘플도 배포되고 있어 추천합니다. 무료로 공개되어 있습니다.
  • Practical Malware Analysis
    • 멀웨어 분석 전반에 대해 상세히 해설된 양서. 샘플과 해답이 공개되어 있어 연습을 하면서 배울 수 있습니다.
  • malware_training_vol1 by hasherezade
    • @hasherezade 님에 의한 멀웨어 분석 트레이닝 자료. WIP이지만, 연습용 샘플도 배포되고 있어 추천합니다.
  • Malware Analysis - CSCI 4976
    • Rensselaer Polytechnic Institute의 멀웨어 분석 강의 자료. 연습용 샘플도 배포되고 있습니다.
  • Workshop by Malware Unicorn
    • @malwareunicorn 님에 의한 리버스 엔지니어링 워크숍 자료입니다.
  • Youtube channel by SANS Digital Forensics and Incident Response
    • 세계적으로 유명한 보안 트레이닝 SANS의 DFIR 관련 Youtube 채널입니다.
  • Youtube channel by OALabs

멀웨어 분석 온라인 트레이닝도 추천합니다.

  • The Beginner Malware Analysis Course
    • @0verfl0w 님에 의한 멀웨어 분석 입문 트레이닝
  • From Zero to Hero
  • @0verfl0w 님과 @vk_intel 님에 의한 실전적인 멀웨어 분석 트레이닝
  • Zero2Automated
  • @0verfl0w 님과 @vk_intel 님에 의한, 발전적인 멀웨어 분석 트레이닝
  • OpenSecurityTraining2
    • x86/x64 어셈블리나 리버스 엔지니어링, Windows 내부 구조 등을 배울 수 있는 무료 강의 자료입니다. 연습도 준비되어 있습니다.

멀웨어의 동작, 악용하는 테크닉에 대해 정리되어 있는 페이지를 소개합니다.

  • Malware Behavior Catalog (MBC)
    • 멀웨어 분석에 특화되어, 멀웨어의 목적(Objective), 거동(Behavior), 코드상의 특징을 체계화한 카탈로그입니다. ATT&CK와 대응시키면서, 멀웨어 분석에서 중요해지는 거동이 정리되어 있습니다.
  • capa-rules
    • capa가 기능을 식별하기 위해 이용하는 룰집입니다. 룰을 읽음으로써, 멀웨어의 대표적인 기능이나 테크닉이 바이너리상에서 어떤 특징으로 나타나는지를 학습할 수 있습니다.
  • MITRE ATT&CK
    • 공격의 수법이나 테크닉, 절차가 프레임워크로서 정의되어 있어, 멀웨어 분석뿐만 아니라 사이버 공격 전반을 배우는 데 좋습니다.
  • ired.team
    • 펜테스터, 레드팀, 공격자가 사용하는 테크닉과 그 구현 소개
  • malpedia
    • 멀웨어 패밀리별로 분석 리포트가 정리되어 있습니다.
  • Ten process injection techniques: A technical survey of common and trending process injection techniques
    • 코드 인젝션 테크닉 소개
  • Code Injection demos by hasherezade
    • 코드 인젝션 테크닉 구현
  • Evasion techniques by cpr
    • 멀웨어의 분석 회피 테크닉 정리
  • Al-Khaser
    • 멀웨어의 안티 분석 기능을 구현한 OSS 도구와 소스 코드

매일 공개되는 위협 정보나 멀웨어 분석을 다룬 블로그나 리포트도 중요한 정보원이 됩니다. RSS 리더 등으로 갱신을 통지해 두면 편리합니다. 그것들을 정리하고 있는 사이트도 있으므로, 활용할 수 있습니다.

  • AlienVault - Open Threat Exchange
  • Vx Underground - Malware Analysis

이들 중에서 일본어로 멀웨어의 상세한 분석을 다루고 있는 것을 소개해 둡니다.

  • Japan Security Analyst Conference
  • JPCERT 코디네이션 센터 공식 블로그
  • LAC 리포트 by 이시카와 요시히로 님
  • 표적형 공격의 실태와 대책 어프로치 by 마크니카 네트웍스(최신 기사 링크)
  • NTT Security Japan Technical blog
  • MBSD Blog
  • fortinet 블로그 위협 리서치
  • Unit42 블로그
  • 트렌드마이크로 보안 블로그

그 외에도, YARA 룰을 읽음으로써 멀웨어의 특징에 대해 학습할 수 있습니다.

  • 커뮤니티의 YARA 룰
  • Neo23x0의 YARA 룰
  • CAPEv2의 YARA 룰​
  • ESET의 YARA 룰​
  • JPCERT의 YARA 룰​
  • awesome-yara

리버스 엔지니어링 대상 프로그램 개발에 관한 지식

리버스 엔지니어링은 멀웨어 분석에 있어 일부에 지나지 않지만, 멀웨어 분석가가 되기 위해서는 피할 수 없는 길입니다. 샌드박스를 사용한 동적 분석이나 도구를 사용한 동적 분석(수동으로 행하는 디버그를 제외)만으로는 멀웨어 기능의 전모나 사용되고 있는 알고리즘을 특정하는 것은 곤란합니다.

리버스 엔지니어링을 행하기 위해서는 원래의 소스 코드에 대해 이해해 둘 필요가 있습니다. (멀웨어 분석에서 일반적인 Windows 환경을 상정합니다만) Windows API를 사용한 프로그래밍 경험 없이 멀웨어 분석을 하는 것은 멀리 돌아가는 길이 될 것입니다.

Windows API는 Microsoft가 공식 문서와 샘플을 공개하고 있습니다. ※일본어로 번역되어 있으면 일부 표시가 이상한 경우가 있으므로 주의합시다

  • Windows API - Microsoft Learn
  • Windows classic samples

Windows OS의 구조를 배우는 데는 다음 서적이 추천입니다.

  • 인사이드 Windows 제7판 상
    • 시스템 아키텍처, 프로세스, 스레드, 메모리 관리, I/O 등, Windows 내부 구조의 기초를 배울 수 있습니다.
  • 인사이드 Windows 제7판 하
    • 시스템 메커니즘, 가상화, 진단·트레이스, 파일 시스템, 기동 처리 등을 다룹니다.
  • Windows 보안 인터널
    • Windows의 인증, 인가, 감사, 커널의 보안 기구 등을 PowerShell에 의한 실험을 곁들여 배울 수 있습니다.

C/C++ 이외의 언어·런타임도 알아두기

C/C++는 Windows 멀웨어의 리버스 엔지니어링을 배우는 데 있어 지금도 매우 중요하므로, 처음 배우는 언어로서 추천합니다. 한편으로, 실제 분석 대상은 C/C++만이 아닙니다. 2026년 현재는 적어도 다음에 대해, 바이너리나 런타임의 특징을 알아두면 도움이 됩니다.

  • C / C++: 네이티브 코드, Windows API, CRT, 컴파일러 최적화
  • .NET: CLR, CIL/MSIL, 메타데이터, 난독화
  • Go: Go runtime, goroutine, 문자열·타입 정보, Go 고유의 바이너리 구조
  • Rust: panic/unwind 처리, 이름 맹글링, 표준 라이브러리, 제네릭스나 최적화에 의한 코드 생성
  • Python: PyInstaller 등으로 패키징된 실행 파일, Python bytecode

처음부터 모든 언어를 깊이 배울 필요는 없습니다. 개발 언어나 런타임이 변화하면 필요한 지식도 변화한다는 것은 알아두도록 합시다.

리버스 엔지니어링에 관한 지식

분석 대상의 언어나 환경에서의 프로그래밍 기술이 몸에 익으면, 리버스 엔지니어링에 대해 공부해 갑시다. 멀웨어 분석에서 일반적인 Windows의 PE 파일을 분석하는 경우, 우선은 C나 C++의 입문 프로그램을 리버스 엔지니어링해 봅시다. 다음 단계로서는, 스스로 컴파일한(소스 코드가 존재하는) Win API를 사용한 PE 파일을 분석해 봅시다. 같은 소스 코드라도, 선택하는 프로젝트나 컴파일이나 링크의 옵션 등을 변경하여, 실행 파일에 어떤 변화가 나타나는지까지 보아 두면, 리버스 엔지니어링 기술이 상당히 붙을 것이라고 생각합니다.

2026년에 추천하는 학습 방법: LLM에게 연습용 프로그램을 만들게 한다

예전에는 Microsoft의 샘플이나 GitHub상의 코드를 찾아, 그것을 고쳐 쓰면서 학습하는 것을 추천하고 있었습니다. 이 방법은 현재도 유효하지만, 2026년 현재는 LLM이나 Coding Agent에게 자신의 학습 목적에 맞춘 작은 프로그램을 만들어 받는 방법도 매우 유효합니다.

예를 들어, 처음에는 10~50행 정도의 작은 프로그램을 생성해 받습니다.```text CreateFileWとWriteFileを使ってテキストファイルを作成する、 できるだけ小さなWindows Cプログラムを作ってください。 リバースエンジニアリングの教材に使いたいので、 処理を複雑にせず、各Windows APIを使う理由も説明してください。

root@kitploit:~
生成されたコードを、Microsoft Learnのドキュメントと照らし合わせながら内容を確認し、自分でコンパイルします。
その後、GhidraやIDAなどで自分がコンパイルしたバイナリを解析し、元のソースコードと逆アセンブル・デコンパイル結果を比較します。

以下のループで勉強します。```text
LLMに小さなコードを作らせる
        ↓
ソースコードを読む・APIを調べる
        ↓
自分でビルドする
        ↓
Ghidraなどで解析する
        ↓
元のソースコードと比較する
        ↓
分からない部分だけLLMに質問する
        ↓
別の条件で再ビルドして比較する

예를 들어, 동일한 처리의 소스 코드에 대해 다음을 비교해 보면 좋습니다.

  • Debug / Release
  • 최적화 없음 / 최적화 있음 (-O0 / -O2, MSVC에서는 /Od / /O2 등)
  • x86 / x64
  • 심볼 있음 / 심볼 없음
  • MSVC / Clang / GCC 등 서로 다른 컴파일러
  • C / C++ / Rust / Go 등 서로 다른 언어

원본 소스 코드를 알고 있는 상태에서 바이너리를 분석하는 것은 리버스 엔지니어링을 배우는 데 매우 좋은 훈련이 됩니다.

더 나아가 리버스 엔지니어링 기술을 연마하려면 CTF의 Rev 문제나 Crackme를 푸는 것이 좋습니다. 특히 PE 파일 문제나 악성코드 분석가를 대상으로 한 것이 추천됩니다.

  • The Flare On Challenge
    • Mandiant(Google)의 FLARE 팀이 주최하는 악성코드 분석 기술에 초점을 맞춘 CTF.
  • Beginner Malware Reversing Challenges by MalwareTech
    • MalwareTech가 제공하는 악성코드 분석 초보자용 연습 문제
  • reversing.kr
    • PE 형식이 많은 CrackMe 배포 사이트
  • crackmes.one
    • CrackMe投稿 사이트

또한 악성코드 리버스 엔지니어링에서는 암호 알고리즘 처리를 리버스 엔지니어링하는 경우가 많으므로, 기본적인 암호 기술에 대해 배우는 것을 권장합니다. 알고리즘을 이해했다면 GitHub 등에서 공개된 오픈소스 암호 알고리즘 구현 소스 코드를 읽고, 실제로 리버스 엔지니어링해 봅시다.

  • 暗号技術入門 第3版
  • OpenSSL Project
  • Network Security Services
  • Crypto++ Library
  • wolfSSL

분석 도구에 관한 지식

악성코드 분석을 진행함에 있어 더 좋은 도구를 사용하거나 도구를 능숙하게 다루면 쉽게 분석할 수 있는 경우가 있습니다. 또한 다양한 지식을 가지고 있더라도 실제로는 도구를 통해 분석하기 때문에, 도구의 사용 방법도 이해해 둘 필요가 있습니다.

분석 도구의 설치나 업데이트 등의 관리에는 Windows 환경에서는 Mandiant가 공개한 FLARE-VM이 편리합니다. 악성코드 분석이나 리버스 엔지니어링에 필요한 도구를 한꺼번에 도입할 수 있습니다.

Linux 환경에서는 REMnux를 이용할 수 있습니다. 이 역시 악성코드 분석에 필요한 도구가 정리되어 있으며, 수록 도구 목록에서 확인할 수 있습니다.

FLARE-VM과 REMnux는 둘 다 악성코드 분석 환경을 간단히 구축할 수 있기 때문에, 처음 분석 환경을 만들 때도 추천합니다. 각각에 포함된 도구를 확인하고 실제로 사용해 봄으로써, 어떤 분석 도구가 존재하고 어떤 상황에서 사용하는지를 배울 수 있습니다.

또한 다음 링크에서 소개하는 도구들도 사용해 보면 좋습니다.

  • awesome-reversing
  • Awesome Malware Analysis
  • Awesome Ghidra

LLM・Coding Agent를 활용한 학습과 분석

LLM을 교사로 활용하기

LLM의 편리한 사용법 중 하나는 모르는 것을 그 자리에서 질문할 수 있는 교사로 활용하는 것입니다. LLM이 등장하기 이전에는 자신이 이해하지 못한 것을 스스로 조사하고 그 내용을 이해해야 했습니다. 특히 초보자의 경우 애초에 무엇을 조사해야 할지 모르는 경우도 많아, 학습에 있어 하나의 장벽이 되었을 것이라고 생각합니다. 현재는 높은 수준의 지식을 가진 LLM이 자신의 이해도에 맞춰 몇 번이든 친절하게 설명해 줍니다. 모르면 다시 물어보면 되고, "더 쉽게 설명해 줘", "구체적인 예를 들어 줘", "이 이해가 맞는지 확인해 줘"와 같은 사용법도 가능합니다. 의욕만 있다면 모르는 것을 얼마든지 질문하면서 학습할 수 있는, 좋은 시대가 되었다고 생각합니다.

예를 들어, 디스어셈블 결과나 디컴파일 결과에 대해 다음과 같은 질문을 할 수 있습니다.```text この関数の役割と、そう判断できる理由を教えてください。

root@kitploit:~
## 2.3.2.2.2. 認証情報の悪用

### 2.3.2.2.2.1. 概要

**認証情報の悪用**とは、攻撃者が侵害されたシステム内で、盗まれた、あるいは不正に入手した認証情報(ユーザー名、パスワード、APIキー、トークン、ハッシュなど)を利用して、権限を昇格させたり、横方向に移動したり、追加のリソースにアクセスしたりする攻撃手法です。

### 2.3.2.2.2.2. 攻撃の仕組み

1. **認証情報の入手**: 攻撃者はフィッシング、ブルートフォース、メモリダンプ、設定ファイルの読み取りなどにより認証情報を入手します。
2. **認証情報の検証**: 入手した認証情報が有効かどうかを確認します。
3. **権限昇格・横展開**: 有効な認証情報を用いて、より高い権限を持つアカウントや他のシステムへアクセスします。
4. **目的の達成**: データ窃取、マルウェア展開、バックドア設置などを行います。

### 2.3.2.2.2.3. 主な手法

- **Pass-the-Hash (PtH)**: NTLMハッシュを直接使用して認証を行います。
- **Pass-the-Ticket (PtT)**: Kerberosチケットを窃取して再利用します。
- **Overpass-the-Hash**: NTLMハッシュからKerberosチケットを取得します。
- **Golden Ticket**: KRBTGTアカウントのハッシュを用いて任意のKerberosチケットを偽造します。
- **Silver Ticket**: サービスアカウントのハッシュを用いて特定サービスのチケットを偽造します。
- **Credential Dumping**: LSASSメモリやSAMデータベースから認証情報を抽出します。

### 2.3.2.2.2.4. 検出方法

- 異常なログオンタイプ(例: Type 3、Type 9)の監視
- 短時間における多数のアカウントへのログオン試行
- 通常と異なる時間帯・場所からのアクセス
- Kerberosチケットの異常な使用パターン
- LSASSプロセスへの不審なアクセス

### 2.3.2.2.2.5. 対策

- **多要素認証 (MFA)** の導入
- **最小権限の原則**の徹底
- **特権アカウントの分離**と定期的なパスワード変更
- **Credential Guard** や **LSA保護**の有効化
- **監査ログ**の収集とSIEMによる相関分析
- **定期的な脆弱性診断**とパッチ適用```text
このデコンパイル結果から変数の型を推定したいです。
型を判断するために、どの命令、API、参照先を確認すべきですか?

주요 기능

  • 다중 소스 코드 분석: 로컬 디렉터리, Git 저장소, ZIP 아카이브, 단일 파일을 지원합니다.
  • 포괄적인 보안 검사: SQL 인젝션, XSS, 명령어 인젝션, 경로 탐색, 하드코딩된 비밀 정보, 안전하지 않은 암호화를 탐지합니다.
  • 지능형 컨텍스트 분석: 파일 유형, 프레임워크, 코드 패턴을 기반으로 위험도 점수를 산정합니다.
  • 유연한 보고: 콘솔, JSON, HTML, SARIF 형식으로 결과를 출력합니다.
  • CI/CD 통합: 심각도 임계값에 따른 종료 코드를 지원하여 파이프라인에 적합합니다.
  • 구성 가능한 규칙: YAML 기반 규칙 세트로 검사 항목을 사용자 정의할 수 있습니다.

설치

소스에서 설치

root@kitploit:~
git clone https://github.com/example/security-scanner.git
cd security-scanner
pip install -r requirements.txt
pip install -e .

Docker 사용

root@kitploit:~
docker build -t security-scanner .
docker run --rm -v $(pwd):/scan security-scanner /scan

사용법

기본 스캔

root@kitploit:~
# 현재 디렉터리 스캔
security-scanner scan .

# 특정 디렉터리 스캔
security-scanner scan /path/to/project

# Git 저장소 스캔
security-scanner scan https://github.com/user/repo.git

출력 형식

root@kitploit:~
# 콘솔 출력 (기본값)
security-scanner scan . --format console

# JSON 출력
security-scanner scan . --format json --output results.json

# HTML 보고서
security-scanner scan . --format html --output report.html

# SARIF 출력 (GitHub Code Scanning용)
security-scanner scan . --format sarif --output results.sarif

심각도 필터링

root@kitploit:~
# 높은 심각도 이상만 표시
security-scanner scan . --severity high

# 심각도 임계값 설정 (CI/CD용)
security-scanner scan . --fail-on high

구성

.security-scanner.yml 파일을 프로젝트 루트에 생성합니다:

root@kitploit:~
rules:
  sql-injection:
    enabled: true
    severity: critical
  xss:
    enabled: true
    severity: high
  hardcoded-secrets:
    enabled: true
    severity: critical

exclude:
  - "tests/**"
  - "vendor/**"
  - "*.min.js"

severity_threshold: medium

규칙

내장 규칙

사용자 정의 규칙

사용자 정의 규칙을 YAML로 정의할 수 있습니다:

root@kitploit:~
rules:
  custom-api-key:
    description: "하드코딩된 API 키 탐지"
    pattern: "api[_-]?key\\s*=\\s*['\"][a-zA-Z0-9]{32,}['\"]"
    severity: critical
    languages:
      - python
      - javascript
      - java

CI/CD 통합

GitHub Actions

root@kitploit:~
name: Security Scan
on: [push, pull_request]

jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run security scanner
        run: |
          pip install security-scanner
          security-scanner scan . --format sarif --output results.sarif --fail-on high
      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: results.sarif

GitLab CI

root@kitploit:~
security-scan:
  stage: test
  script:
    - pip install security-scanner
    - security-scanner scan . --format json --output gl-results.json --fail-on high
  artifacts:
    reports:
      sast: gl-results.json

API 사용법

root@kitploit:~
from security_scanner import Scanner, Config

config = Config.from_file(".security-scanner.yml")
scanner = Scanner(config=config)

results = scanner.scan("/path/to/project")

for finding in results.findings:
    print(f"[{finding.severity}] {finding.rule_id}: {finding.message}")
    print(f"  File: {finding.file_path}:{finding.line_number}")

기여

기여를 환영합니다! 자세한 내용은 CONTRIBUTING.md를 참조하세요.

  1. 저장소를 포크합니다.
  2. 기능 브랜치를 생성합니다 (git checkout -b feature/amazing-feature).
  3. 변경 사항을 커밋합니다 (git commit -m 'Add amazing feature').
  4. 브랜치에 푸시합니다 (git push origin feature/amazing-feature).
  5. Pull Request를 생성합니다.

라이선스

이 프로젝트는 MIT 라이선스에 따라 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.```text このWindows API呼び出しの前後で使われている構造体について説明してください。 各フィールドを確認するためにGhidra上でどこを見るべきかも教えてください。

root@kitploit:~
## 検出機能

- **ファイルレス**: ファイルレス攻撃の検出
- **プロセスインジェクション**: プロセスインジェクション技術の検出
- **難読化スクリプト**: 難読化されたスクリプトの検出
- **メモリ**: メモリ内の不審な活動の検出
- **持続性**: 持続性メカニズムの検出
- **横展開**: 横展開の試みの検出
- **権限昇格**: 権限昇格の試みの検出
- **認証情報アクセス**: 認証情報アクセスの試みの検出
- **偵察**: 偵察活動の検出
- **C2通信**: C2通信の検出
- **データ流出**: データ流出の試みの検出
- **影響**: 影響を与える活動の検出

## 検出ルール

### ファイルレス

- **ファイルレス - PowerShell**: PowerShellファイルレス攻撃の検出
- **ファイルレス - WMI**: WMIファイルレス攻撃の検出
- **ファイルレス - レジストリ**: レジストリファイルレス攻撃の検出
- **ファイルレス - スケジュールタスク**: スケジュールタスクファイルレス攻撃の検出
- **ファイルレス - サービス**: サービスファイルレス攻撃の検出
- **ファイルレス - ドライバ**: ドライバファイルレス攻撃の検出
- **ファイルレス - ブート**: ブートファイルレス攻撃の検出
- **ファイルレス - ログ**: ログファイルレス攻撃の検出
- **ファイルレス - その他**: その他のファイルレス攻撃の検出

### プロセスインジェクション

- **プロセスインジェクション - リモートスレッド**: リモートスレッド作成によるプロセスインジェクションの検出
- **プロセスインジェクション - アトミック**: アトミック操作によるプロセスインジェクションの検出
- **プロセスインジェクション - プロセスホローイング**: プロセスホローイングによるプロセスインジェクションの検出
- **プロセスインジェクション - スレッドハイジャック**: スレッドハイジャックによるプロセスインジェクションの検出
- **プロセスインジェクション - APC**: APCによるプロセスインジェクションの検出
- **プロセスインジェクション - その他**: その他のプロセスインジェクションの検出

### 難読化スクリプト

- **難読化スクリプト - PowerShell**: PowerShell難読化スクリプトの検出
- **難読化スクリプト - VBScript**: VBScript難読化スクリプトの検出
- **難読化スクリプト - JScript**: JScript難読化スクリプトの検出
- **難読化スクリプト - Python**: Python難読化スクリプトの検出
- **難読化スクリプト - その他**: その他の難読化スクリプトの検出

### メモリ

- **メモリ - シェルコード**: シェルコードの検出
- **メモリ - 反射型DLL**: 反射型DLLの検出
- **メモリ - プロセス**: 不審なプロセスの検出
- **メモリ - ドライバ**: 不審なドライバの検出
- **メモリ - その他**: その他の不審なメモリ活動の検出

### 持続性

- **持続性 - レジストリ**: レジストリ持続性の検出
- **持続性 - スケジュールタスク**: スケジュールタスク持続性の検出
- **持続性 - サービス**: サービス持続性の検出
- **持続性 - スタートアップ**: スタートアップ持続性の検出
- **持続性 - WMI**: WMI持続性の検出
- **持続性 - その他**: その他の持続性メカニズムの検出

### 横展開

- **横展開 - SMB**: SMB横展開の検出
- **横展開 - WMI**: WMI横展開の検出
- **横展開 - PowerShell**: PowerShell横展開の検出
- **横展開 - RDP**: RDP横展開の検出
- **横展開 - SSH**: SSH横展開の検出
- **横展開 - その他**: その他の横展開の検出

### 権限昇格

- **権限昇格 - UAC**: UACバイパスの検出
- **権限昇格 - トークン**: トークン操作の検出
- **権限昇格 - サービス**: サービス権限昇格の検出
- **権限昇格 - ドライバ**: ドライバ権限昇格の検出
- **権限昇格 - その他**: その他の権限昇格の検出

### 認証情報アクセス

- **認証情報アクセス - LSASS**: LSASSアクセスの検出
- **認証情報アクセス - SAM**: SAMアクセスの検出
- **認証情報アクセス - レジストリ**: レジストリ認証情報アクセスの検出
- **認証情報アクセス - ブラウザ**: ブラウザ認証情報アクセスの検出
- **認証情報アクセス - その他**: その他の認証情報アクセスの検出

### 偵察

- **偵察 - システム**: システム偵察の検出
- **偵察 - ネットワーク**: ネットワーク偵察の検出
- **偵察 - ユーザー**: ユーザー偵察の検出
- **偵察 - プロセス**: プロセス偵察の検出
- **偵察 - その他**: その他の偵察活動の検出

### C2通信

- **C2通信 - HTTP**: HTTP C2通信の検出
- **C2通信 - HTTPS**: HTTPS C2通信の検出
- **C2通信 - DNS**: DNS C2通信の検出
- **C2通信 - TCP**: TCP C2通信の検出
- **C2通信 - UDP**: UDP C2通信の検出
- **C2通信 - その他**: その他のC2通信の検出

### データ流出

- **データ流出 - HTTP**: HTTPデータ流出の検出
- **データ流出 - HTTPS**: HTTPSデータ流出の検出
- **データ流出 - DNS**: DNSデータ流出の検出
- **データ流出 - FTP**: FTPデータ流出の検出
- **データ流出 - その他**: その他のデータ流出の検出

### 影響

- **影響 - ランサムウェア**: ランサムウェア活動の検出
- **影響 - データ破壊**: データ破壊活動の検出
- **影響 - サービス停止**: サービス停止活動の検出
- **影響 - その他**: その他の影響活動の検出```text
このアセンブリを1命令ずつ説明するのではなく、
まずbasic blockごとの役割を整理して、私が自分で処理を推定できるようにヒントをください。

주요 기능

  • 다중 소스 코드 분석: 로컬 디렉터리, Git 저장소, ZIP 아카이브, 단일 파일을 지원합니다.
  • 포괄적인 보안 검사: SQL Injection, XSS, Command Injection, Path Traversal, 하드코딩된 자격 증명, 안전하지 않은 암호화, 취약한 종속성 등 50개 이상의 보안 규칙을 포함합니다.
  • 다중 언어 지원: Python, JavaScript, TypeScript, Java, PHP, Ruby, Go, C/C++, C# 등을 지원합니다.
  • 유연한 보고: 콘솔, JSON, HTML, SARIF 형식으로 결과를 출력합니다.
  • CI/CD 통합: GitHub Actions, GitLab CI, Jenkins 및 기타 파이프라인과 원활하게 연동됩니다.
  • 사용자 정의 규칙: YAML 기반 규칙 정의로 사용자 정의 보안 검사를 지원합니다.
  • 심각도 분류: 발견된 문제를 심각도(Critical, High, Medium, Low, Info)에 따라 분류합니다.

설치

pip 사용

root@kitploit:~
pip install secscan

소스에서 설치

root@kitploit:~
git clone https://github.com/example/secscan.git
cd secscan
pip install -e .

Docker 사용

root@kitploit:~
docker pull secscan/secscan:latest
docker run --rm -v $(pwd):/scan secscan/secscan:latest /scan

빠른 시작

기본 스캔

root@kitploit:~
# 현재 디렉터리 스캔
secscan scan .

# 특정 디렉터리 스캔
secscan scan /path/to/project

# 단일 파일 스캔
secscan scan app.py

Git 저장소 스캔

root@kitploit:~
secscan scan --git https://github.com/example/repo.git

출력 형식 지정

root@kitploit:~
# JSON 출력
secscan scan . --format json --output results.json

# HTML 보고서
secscan scan . --format html --output report.html

# SARIF 출력 (CI/CD용)
secscan scan . --format sarif --output results.sarif

사용법

명령줄 옵션

root@kitploit:~
Usage: secscan [OPTIONS] COMMAND [ARGS]...

Options:
  --version   버전 표시
  --help      도움말 표시

Commands:
  scan        소스 코드에서 보안 문제 스캔
  rules       사용 가능한 규칙 나열
  config      설정 관리

scan 명령어

root@kitploit:~
Usage: secscan scan [OPTIONS] TARGET

Options:
  -f, --format [console|json|html|sarif]  출력 형식 (기본값: console)
  -o, --output PATH                       출력 파일 경로
  -s, --severity [critical|high|medium|low|info]  최소 심각도 필터
  -l, --language TEXT                     특정 언어로 제한
  -e, --exclude TEXT                      제외할 패턴
  --git                                   대상이 Git 저장소임
  --config PATH                           설정 파일 경로
  --rules PATH                            사용자 정의 규칙 디렉터리
  --no-color                              색상 출력 비활성화
  -v, --verbose                           상세 출력
  --help                                  도움말 표시

예시

root@kitploit:~
# 높은 심각도 문제만 표시
secscan scan . --severity high

# Python 파일만 스캔
secscan scan . --language python

# 테스트 디렉터리 제외
secscan scan . --exclude "tests/*" --exclude "*.min.js"

# 사용자 정의 규칙 사용
secscan scan . --rules ./my-rules/

# 상세 출력과 함께 JSON 보고서 생성
secscan scan . --format json --output report.json --verbose

설정

설정 파일

SecScan은 다음 위치에서 설정 파일을 찾습니다:

  1. --config 옵션으로 지정된 경로
  2. 현재 디렉터리의 .secscan.yml
  3. 홈 디렉터리의 ~/.config/secscan/config.yml

설정 예시

root@kitploit:~
# .secscan.yml
severity: medium
format: console
exclude:
  - "tests/*"
  - "*.min.js"
  - "node_modules/*"
  - "vendor/*"
languages:
  - python
  - javascript
  - go
rules:
  custom_rules_dir: ./custom-rules
  disabled:
    - "SQL_INJECTION_001"
    - "XSS_002"

보안 규칙

내장 규칙

SecScan은 다음과 같은 카테고리의 50개 이상의 내장 규칙을 포함합니다:

사용자 정의 규칙

YAML 형식으로 사용자 정의 규칙을 정의할 수 있습니다:

root@kitploit:~
# custom-rules/my-rule.yml
id: CUSTOM_001
name: 하드코딩된 API 키
description: 소스 코드에 하드코딩된 API 키를 감지합니다
severity: high
languages:
  - python
  - javascript
pattern: '(?i)(api[_-]?key|apikey)\s*=\s*["\'][a-zA-Z0-9]{16,}["\']'
message: "하드코딩된 API 키가 발견되었습니다. 환경 변수를 사용하세요."
references:
  - https://owasp.org/www-community/vulnerabilities/Use_of_hard-coded_password

CI/CD 통합

GitHub Actions

root@kitploit:~
name: Security Scan
on: [push, pull_request]

jobs:
  secscan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: SecScan 실행
        uses: secscan/action@v1
        with:
          args: scan . --format sarif --output results.sarif
      - name: SARIF 업로드
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: results.sarif

GitLab CI

root@kitploit:~
secscan:
  image: secscan/secscan:latest
  script:
    - secscan scan . --format json --output results.json
  artifacts:
    reports:
      sast: results.json

Jenkins

root@kitploit:~
pipeline {
    agent any
    stages {
        stage('Security Scan') {
            steps {
                sh 'secscan scan . --format json --output results.json'
            }
        }
    }
    post {
        always {
            archiveArtifacts artifacts: 'results.json'
        }
    }
}

출력 형식

콘솔 출력

root@kitploit:~
$ secscan scan .

SecScan v1.0.0 - 보안 스캐너
스캔 대상: /path/to/project
스캔 시간: 2.34초

[CRITICAL] SQL Injection
  파일: app/database.py:45
  코드: cursor.execute("SELECT * FROM users WHERE id = " + user_id)
  설명: 사용자 입력이 SQL 쿼리에 직접 연결되었습니다
  수정: 매개변수화된 쿼리를 사용하세요

[HIGH] 하드코딩된 자격 증명
  파일: config/settings.py:12
  코드: PASSWORD = "secret123"
  설명: 소스 코드에 비밀번호가 하드코딩되어 있습니다
  수정: 환경 변수나 비밀 관리 도구를 사용하세요

발견된 문제: 2개 (Critical: 1, High: 1)

JSON 출력

root@kitploit:~
{
  "version": "1.0.0",
  "scan_time": "2024-01-15T10:30:00Z",
  "target": "/path/to/project",
  "duration": 2.34,
  "findings": [
    {
      "id": "SQL_INJECTION_001",
      "severity": "critical",
      "title": "SQL Injection",
      "file": "app/database.py",
      "line": 45,
      "code": "cursor.execute(\"SELECT * FROM users WHERE id = \" + user_id)",
      "message": "사용자 입력이 SQL 쿼리에 직접 연결되었습니다",
      "remediation": "매개변수화된 쿼리를 사용하세요"
    }
  ],
  "summary": {
    "total": 2,
    "critical": 1,
    "high": 1,
    "medium": 0,
    "low": 0,
    "info": 0
  }
}

고급 사용법

Python API

root@kitploit:~
from secscan import Scanner, Config

# 설정 초기화
config = Config(
    severity="high",
    languages=["python", "javascript"],
    exclude=["tests/*"]
)

# 스캐너 생성
scanner = Scanner(config)

# 디렉터리 스캔
results = scanner.scan_directory("/path/to/project")

# 결과 처리
for finding in results.findings:
    print(f"[{finding.severity.upper()}] {finding.title}")
    print(f"  {finding.file}:{finding.line}")
    print(f"  {finding.message}")

사용자 정의 포맷터

root@kitploit:~
from secscan.formatters import BaseFormatter

class CustomFormatter(BaseFormatter):
    def format(self, results):
        output = []
        for finding in results.findings:
            output.append(f"{finding.severity}: {finding.title} ({finding.file}:{finding.line})")
        return "\n".join(output)

# 사용자 정의 포맷터 등록
scanner.register_formatter("custom", CustomFormatter())

문제 해결

일반적인 문제

스캔이 너무 오래 걸림

  • --exclude를 사용하여 불필요한 디렉터리를 제외하세요
  • --language로 특정 언어만 스캔하세요
  • 대규모 프로젝트의 경우 병렬 처리를 활성화하세요

거짓 양성

  • 설정 파일에서 특정 규칙을 비활성화하세요
  • 사용자 정의 규칙으로 패턴을 세밀하게 조정하세요
  • 인라인 주석을 사용하여 특정 줄을 무시하세요

규칙을 찾을 수 없음

  • --rules 옵션으로 올바른 경로를 지정했는지 확인하세요
  • 규칙 파일이 유효한 YAML 형식인지 확인하세요
  • secscan rules 명령어로 사용 가능한 규칙을 확인하세요

디버그 모드

root@kitploit:~
# 상세 로깅 활성화
secscan scan . --verbose

# 디버그 출력
SECSCAN_DEBUG=1 secscan scan .

기여

기여를 환영합니다! 자세한 내용은 CONTRIBUTING.md를 참조하세요.

개발 환경 설정

root@kitploit:~
# 저장소 복제
git clone https://github.com/example/secscan.git
cd secscan

# 가상 환경 생성
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 개발 종속성 설치
pip install -e ".[dev]"

# 테스트 실행
pytest

# 린트 실행
ruff check .
mypy secscan

라이선스

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.

감사의 글

  • OWASP - 보안 모범 사례
  • Semgrep - 영감을 준 정적 분석 도구
  • Bandit - Python 보안 스캐너
  • 모든 기여자들

연락처

  • GitHub Issues: https://github.com/example/secscan/issues
  • 이메일: [email protected]
  • 문서: https://secscan.readthedocs.io```text 私はこの関数を「設定ファイルの読み込み処理」だと推測しました。 この仮説を検証するために確認すべきポイントを挙げてください。
root@kitploit:~
最初から答えを聞くのではなく、ヒント、確認ポイント、検証方法を聞く使い方がおすすめです。

### Agentic Reverse Engineering

2026年現在は、ChatGPTのような対話型LLMだけでなく、ファイルの読み書き、プログラムのビルド、コマンドの実行などを行えるCoding Agentも利用できるようになっています。
さらに、MCP(Model Context Protocol)などを利用することで、AI Agentから解析ツールを直接操作する方法も広まりつつあります。
例えばREMnuxには、AI AgentからREMnux上のマルウェア解析ツールを利用するためのMCP Serverが用意されています。
- [Using AI with REMnux](https://docs.remnux.org/tips/using-ai)
- [REMnux MCP Server](https://github.com/REMnux/remnux-mcp-server)

Ghidraについても、AI Agentから操作するためのMCP実装がいくつか登場しています。私もGhidraをHeadlessで利用し、MCP経由でAI Agentから解析を行うためのMecha Ghidraを開発しています。
- [Mecha Ghidra](https://github.com/ghidra-user-jp/mecha_ghidra)

IDAやその他のリバースエンジニアリングツールについても、MCPやAgentと連携するための実装が複数登場しており、これまで人間が手作業で行っていた解析作業をAgentに任せることができるようになっています。
一方で、初学者の段階からすべての解析をAgentに任せてしまうのはおすすめしません。「なぜその解析を行ったのか」「ツールが内部で何をしているのか」「出力された結果が正しいのか」といったことを自分で判断する力が身につきにくくなるためです。

まずは自分で解析し、分からない部分をLLMに質問するところから始めるとよいでしょう。慣れてきたら、解析支援スクリプトの作成、MCPによるツール連携、Agentを使った解析の自動化へと徐々に進んでいくことをおすすめします。

### LLMへ情報を入力するときの注意

業務で扱っているマルウェア、顧客から提供されたファイル、未公開のIoC、インシデント情報、社内情報などを外部のLLMサービスへ入力する場合には注意が必要です。
利用しているサービスの契約内容、データの保持期間、学習への利用有無、所属組織のルールなどを確認したうえで利用しましょう。

必要に応じて、以下のような対策を検討してください。
- 機微情報をマスクする
- 組織で許可されたLLMサービスを利用する
- APIやEnterprise向けサービスのデータ取り扱いを確認する
- 必要に応じてローカルLLMを利用する

また、マルウェア本体や解析対象のファイル、解析結果の中には、AI Agentを意図しない動作へ誘導する文字列が含まれている可能性もあります。
特に、AI Agentがファイル操作やコマンド実行、解析ツールの操作まで行える場合は、通常のLLMよりも強い権限を持つことになります。そのため、マルウェア解析でAI Agentを利用する場合は、VMなどの隔離環境上で実行し、安全性を確保することをおすすめします。

AIはかなり賢くなりましたが、それでも意図しないコマンドを実行することがあります。
これまでのマルウェア解析と同様に解析環境を隔離するという基本を守って利用しましょう。

# 実際のマルウェアを使わない学習

2026年現在、マルウェア解析を勉強するために、最初から実際のマルウェアを入手する必要はありません。
むしろ初学者には、以下の順番をおすすめします。

1. LLMや自分で作成した10〜50行程度の小さなプログラム
2. 自分でコンパイルしたWindows APIのサンプル
3. CTF/Crackme/マルウェア解析トレーニング用サンプル
4. マルウェアやC2フレームワークなど、ソースコードが公開されているOSS実装
5. 必要性があり、安全な解析環境を準備できる場合のみ実際のマルウェア

最初のうちは、元のソースコードが分かっているプログラムを教材にするのがおすすめです。
自分で解析した結果と実際のソースコードを比較できるため、「どこまで正しく解析できたか」「どこを読み違えたか」を自分で確認できます。
いきなり実際のマルウェアを解析するよりも、まずは答え合わせのできる教材を使って、逆アセンブルやデコンパイル結果の読み方に慣れる方が効率よく学習できると思います。

# マルウェアの入手

## 前置き

ここではマルウェアの入手方法について触れますが、紹介するサービスを利用する際は利用規約を必ず読んで利用してください。
また、以下の内容は、マルウェアの入手を勧めるものではありません。

不正指令電磁的記録に関する罪では、マルウェアの作成、提供、取得、保管などについて、その目的や正当な理由の有無などが要件になります。
私は法律の専門家ではないため、どういった理由であれば法律上の`正当な理由`にあたるかはわかりません。
個人の趣味でマルウェア解析をおこなうことは`正当な理由`として認められない可能性もあります。
捜査されると困る、裁判になったら困る、正当な理由として提示できる活動実績がない、弁護費用がないなど、平穏な人生を絶対に送りたいという人は、個人の趣味でやらないほうがよいかと思います。

とはいえ過度に怯えすぎて萎縮する必要はないとは思います。
最低限、警視庁が公開している不正指令電磁的記録に関する罪に関するページには目を通して、内容を確認しておきましょう。

- https://www.keishicho.metro.tokyo.jp/kurashi/cyber/law/virus.html

マルウェアを扱う上で気にしなければいけないことは、法律面だけではありません。
マルウェアを実行(故意かどうかは問わない)すると、たいていの場合は攻撃者の用意したサーバにアクセスします。
攻撃者のサーバには自分の利用しているIPアドレスのログが残りますし、接続時に利用しているシステムの情報を送信することもあります。
マルウェアによっては、攻撃者によるコマンドの実行などがおこなわれることも考えられますし、内部ネットワークのスキャンや(一番避けるべき)外部への感染活動などがおこなわれるかもしれません。
攻撃者のサーバに記録された情報は攻撃者自身だけでなく、第三者へ提供されることもあります。また、捜査機関はサーバを差し押さえてログを解析したうえで、ISPに情報開示請求をおこなうことができます。

以下のどれか一つにでも当てはまる場合は、実際のマルウェアを利用した学習は控えましょう。

- マルウェアを取り扱う上で、不安がある。
- マルウェア解析のための専用PCや独立したネットワークなど隔離した環境を用意できない。
- 未成年もしくは学生であるが、マルウェアを扱った解析や研究をするうえで責任者がいない(社会人の場合は、全て自己責任として責任を取れない)。

実際のマルウェアを個人的に入手しなくても、学習する方法は前述しております。

最後にオタクがみんな大好きな以下の名言たちで前置きを終えます。
- `With great power comes great responsibility`
- `The abyss gazes also into you.`

## マルウェア共有サービス/IoC共有サービス

マルウェアのサンプルやIoCを共有するためのサービスがいくつかあります。もっとも登録が多く有名なサービスはVirusTotalですが、有償アカウントのみダウンロードが可能であるため、ここでは無償で利用可能なサービスを紹介します。

この2つのサービスがサンプルの入手先としては有力です。
- [MalwareBazaar](https://bazaar.abuse.ch/)
- [Vx Underground](https://www.vx-underground.org/)

参考情報として以下のサービスも記載しておきます。
- [URLhaus](https://urlhaus.abuse.ch/)
- [ThreatFox](https://threatfox.abuse.ch/)
- [MalShare](https://www.malshare.com/)
- [VirusShare](https://virusshare.com/)
- [VirusBay](https://beta.virusbay.io/)
- [Vx Vaul](http://vxvault.net//ViriList.php)
- [theZoo](https://thezoo.morirt.com/)
- [malpedia](https://malpedia.caad.fkie.fraunhofer.de/)

## オンラインサンドボックス

無料で使用できるオンラインサンドボックスのサービスは本来マルウェアの挙動を解析するサービスですが、他者の投稿したマルウェアをダウンロードすることができます。

- [Hybrid Analysis](https://www.hybrid-analysis.com/)
- [Any Run](https://app.any.run/)
- [Triage](https://tria.ge/)
- [Joe Sandbox](https://www.joesandbox.com/)
- [cape](https://capesandbox.com/)

## OSS RAT

以下はRAT(Remote Access Trojan)の実装を理解するのに役に立つリポジトリです。
ソースコードと実際のバイナリを比較することで、通信処理、コマンド実行、ファイル操作などの実装を学ぶことができます。

- [Lilith RAT](https://github.com/werkamsus/Lilith)
- [Quasar RAT](https://github.com/quasar/Quasar)
- [NGLite](https://github.com/Maka8ka/NGLite)
- [AsyncRAT](https://github.com/NYAN-x-CAT/AsyncRAT-C-Sharp)
- [trochilus RAT](https://github.com/5loyd/trochilus)
- [gh0st RAT](https://github.com/sin5678/gh0st)
- [Poison-Ivy-Reload](https://github.com/killeven/Poison-Ivy-Reload)
- [GitHub Topics rat](https://github.com/topics/rat)

## C2フレームワーク

マルウェアのC2通信やAgentの実装を理解するためには、オープンソースで公開されているC2フレームワークのソースコードを読むことも参考になります。
C2フレームワークには、AgentとC2 Server間の通信、コマンドの受信と実行、ファイル操作、プロセス操作、通信データの暗号化など、マルウェアでもよく見られる機能が実装されています。
それぞれ実装言語やAgentの構造、通信方式が異なるため、ソースコードと生成されたAgentを比較しながらリバースエンジニアリングしてみるのもよいでしょう。

- [Sliver](https://github.com/BishopFox/sliver)
- [Mythic](https://github.com/its-a-feature/Mythic)
- [Mythic Agents](https://github.com/MythicAgents)
- [AdaptixC2](https://github.com/Adaptix-Framework/AdaptixC2)
- [Empire](https://github.com/BC-SECURITY/Empire)
- [PoshC2](https://github.com/nettitude/PoshC2)
- [Merlin](https://github.com/Ne0nd0g/merlin)
- [MITRE CALDERA](https://github.com/mitre/caldera)
- [Havoc](https://github.com/HavocFramework/Havoc)
- [The C2 Matrix](https://www.sans.org/tools/the-c2-matrix)
  - 様々なC2フレームワークの機能や特徴を比較するための一覧
도구 다운로드
  • OALabs에 의한 멀웨어 분석 동영상을 중심으로 한 Youtube 채널입니다.
  • Youtube channel by hasherezade
    • hasherezade 님에 의한 멀웨어 분석 동영상을 중심으로 한 Youtube 채널입니다.
  • RecommendationofPerfectUnpacking
    • 나카츠루 님(@you0708)에 의한 언팩 기법 자료입니다.
  • 동인지 by Allsafe
    • 제가 소속된 리버스 엔지니어링이나 멀웨어 분석 기술을 주로 한 동인 서클 Allsafe의 동인지입니다.
  • Malware Analysis at Scale ~ Defeating EMOTET by Ghidra ~ by Allsafe
    • Allsafe에 의한 Emotet 분석 워크숍 자료입니다.
    • 배포 스크립트
  • Advanced Binary Deobfuscation
    • @ntddk 님에 의한 GCC Tokyo, 시큐리티 캠프 전국대회 2020의 바이너리 난독화와 그 해제 기술 강의입니다.
  • MÖBIUS STRIP REVERSE ENGINEERING
    • CS계 지견과 IDA의 내부 구조를 활용한 분석 기사가 풍부합니다. recommended by ntddk。
  • 리버스 엔지니어링 바이블
    • 일본어로 초보자에게 친절하게 해설된 양서입니다.
  • 디버거에 의한 x86 프로그램 분석 입문 x64 대응판
    • 일본어로 디버그를 배운다면 우선 이것이 추천입니다.
  • 멀웨어의 교과서 증보개정판
    • 요시카와 타카시 님에 의한, 멀웨어의 기초, 공격 수법, 랜섬웨어, 분석 수법까지를 폭넓게 다룬 서적입니다. 분석의 시작 방법에 대해서도 구체적으로 해설되어 있어 초학자가 멀웨어 전체상을 파악하는 데 추천합니다.
  • 실전 바이너리 분석
    • 바이너리 포맷, 역어셈블리, 바이너리 계측, 동적 테인트 분석, 심볼릭 실행 등을 다루고 있습니다. Linux/ELF 중심이지만, 바이너리 분석 그 자체를 체계적으로 배우는 데 유용합니다.
  • 마스터링 Ghidra
    • Ghidra의 기본 조작부터 데이터 타입, 스크립트, 확장 기능 등까지 상세히 다루는 종합적인 해설서입니다.
  • 실전 메모리 포렌식
    • Volatility를 이용한 메모리 포렌식을 중심으로, 프로세스, 네트워크, 코드 인젝션, 멀웨어 분석 등을 다루고 있습니다.
  • 위협 인텔리전스의 교과서
    • 멀웨어 분석서는 아니지만, 분석한 검체나 IoC, 공격 수법을 캠페인이나 공격자 정보와 연결짓기 위한 사고방식을 배울 수 있습니다.
  • 규칙 ID설명심각도
    sql-injectionSQL 인젝션 취약점 탐지Critical
    xss크로스 사이트 스크립팅 탐지High
    command-injectionOS 명령어 인젝션 탐지Critical
    path-traversal경로 탐색 취약점 탐지High
    hardcoded-secrets하드코딩된 자격 증명 탐지Critical
    weak-crypto안전하지 않은 암호화 알고리즘 탐지Medium
    insecure-random안전하지 않은 난수 생성 탐지Medium
    카테고리규칙 수설명
    SQL Injection8SQL 쿼리 취약점
    XSS6크로스 사이트 스크립팅
    Command Injection5OS 명령어 주입
    Path Traversal4디렉터리 순회
    하드코딩된 자격 증명7하드코딩된 비밀번호, API 키
    안전하지 않은 암호화6약한 암호화 알고리즘
    취약한 종속성5알려진 취약한 라이브러리
    안전하지 않은 역직렬화4역직렬화 취약점
    SSRF3서버 측 요청 위조
    기타10+기타 보안 문제