Show HN: Nightcrawler – 스마트폰에서 실행되는 로컬 AI 침투 테스트 (Pentesting) 에이전트
요약
스마트폰에서 클라우드 연결 없이 로컬로 실행되는 자율형 침투 테스트(Pentesting) 에이전트인 Nightcrawler를 소개합니다. 소형 AI 모델을 활용해 네트워크 정찰부터 취약점 공격, 보고서 생성까지 전 과정을 자동화하며 스텔스 기능을 갖추고 있습니다.
핵심 포인트
- 스마트폰 GPU에서 100% 로컬로 실행되는 자율형 에이전트
- 네트워크 스캔, 서비스 열거, 취약점 공격 및 보고 자동화
- 탐지를 피하기 위한 스텔스 우선 설계 및 점진적 공격 방식
- 27개의 익스플로잇 플레이북과 방대한 CVE 데이터베이스 탑재
스마트폰에서 완전히 실행되는 자율 침투 테스트 (Penetration testing) 에이전트입니다. 네트워크에 휴대폰을 내려놓고 자리를 떠나면, 클라우드 연결 없이도 호스트를 발견하고, 서비스를 매핑하며, 취약점을 찾아내고, 침투 테스트 보고서를 생성합니다.
░█▄░█ █ █▀▀ █░█ ▀█▀ █▀▀ █▀█ ▄▀█ █░█░█ █░░ █▀▀ █▀█
░█░▀█ █ █▄█ █▀█ ░█░ █▄▄ █▀▄ █▀█ ▀▄▀▄▀ █▄▄ ██▄ █▀▄ v0.1.0
AUTONOMOUS MOBILE PENTEST AGENT
...
**침투 테스트 (Penetration testing, pentesting)**는 네트워크 소유자의 명시적인 허가 하에 공격을 시뮬레이션하여 컴퓨터 네트워크의 보안을 테스트하는 관행입니다. 전문적인 펜테스터(Pentesters)는 실제 공격자가 나타나기 전에 취약점을 찾기 위해 고용됩니다.
Nightcrawler는 휴대폰에서 이 과정을 자동화합니다. 휴대폰의 GPU에서 로컬로 실행되는 소형 AI 모델 (LFM2.5-1.2B-Instruct-Heretic, 12억 개의 파라미터)을 사용하여 다음에 무엇을 할지 — 어떤 호스트를 조사할지, 어떤 도구를 사용할지, 무엇을 찾을지 — 결정합니다. 인터넷 연결이나 클라우드 API가 필요하지 않습니다.
WiFi 침투 (WiFi Breach) (선택 사항) — WiFi 없이 놓아두더라도, 외부 USB WiFi 어댑터를 사용하여 WPA2 네트워크를 자율적으로 크랙할 수 있습니다. 정찰 (Reconnaissance) — 은밀한 스캔을 사용하여 네트워크상의 장치를 발견합니다. 열거 (Enumeration) — 발견된 서비스(웹 서버, 파일 공유, SSH, DNS 등)를 조사합니다. 취약점 공격 (Exploitation) — 알려진 취약점 및 기본 자격 증명을 테스트합니다. 보고 (Reporting) — 발견 사항과 해결 권고 사항이 포함된 구조화된 침투 테스트 보고서를 생성합니다.
이 에이전트는 인내심 있는 인간 펜테스터처럼 작동합니다. 호스트를 순회하며, 턴마다 하나의 작은 동작을 수행하고, 몇 시간에 걸쳐 점진적으로 지식을 구축합니다. 이는 모든 호스트를 한꺼번에 공격하는 전통적인 취약점 스캐너보다 탐지하기 훨씬 어렵게 만듭니다.
| 용어 | 의미 |
|---|---|
| Drop box | 자율적인 테스트를 수행하기 위해 대상 네트워크에 남겨두는 장치 |
| Scope (범위) | 테스트 권한이 부여된 네트워크/호스트의 집합 |
| Rules of Engagement (ROE) | 허용된 작업 범위를 명시하는 법적 문서 |
| Stealth (스텔스) | 네트워크 모니터링 (IDS/IPS) 탐지를 피하기 위한 기술 |
| MCP | Model Context Protocol — AI 도구 사용을 위한 표준 인터페이스 |
| C2 | Command and Control — 에이전트 모니터링 및 제어를 위한 웹 대시보드 |
┌──────────────────────────────────────────────────────────┐
│ PHONE (OnePlus 8) │
│ │
...
전체 시스템 설계는 docs/ARCHITECTURE.md를 참조하세요.
완전 자율형 (Fully autonomous)— 작동 중 인간의 개입이 필요 없음
100% 로컬 추론 (100% local inference)— AI가 휴대폰의 GPU에서 실행되며 클라우드가 필요 없음
범위 준수 (Scope-enforced)— 2단계 방어 체계로 범위 외(out-of-scope) 동작 방지
스텔스 우선 (Stealth-first)— 느린 스캔 속도, 호스트 순환, 커버 트래픽, nmap -T2만 사용
27개의 익스플로잇 플레이북 (27 exploit playbooks)— 자동으로 실행되는 다단계 공격 체인
24,956개의 항목을 포함한 CVE 데이터베이스— 버전을 인식하는 취약점 매칭
웹 대시보드 (Web dashboard)— 실시간 모니터링, 호스트 관리, C2 제어
WiFi 침투 모드 (WiFi breach mode)— USB 어댑터를 이용한 자율적인 WPA2 크래킹 (Pwnagotchi에서 영감)
수동적 탐색 (Passive discovery)— mDNS/NBNS/DHCP/ARP 브로드캐스트의 백그라운드 캡처
멀티 네트워크 (Multi-network)— 네트워크별 데이터 격리, MAC 키 기반 호스트를 통해 DHCP 변경 시에도 유지
자가 치유 (Self-healing)— 가비지 탐지, 컨텍스트 리셋, 워치독(watchdogs), 정지 탐지
학습 캡처 (Training capture)— 향후 모델 미세 조정 (fine-tuning)을 위해 성공적인 상호작용을 로그로 기록
보고서 생성 (Report generation)— 취약점, 익스플로잇 체인, 해결 방법이 포함된 다운로드 가능한 침투 테스트 보고서
전체 기능 참조는 docs/FEATURES.md를 확인하세요.
Android 휴대폰 Kali NetHunter 탑재 (OnePlus 8, Snapdragon 865에서 테스트됨)
루트 권한 (Root access) Magisk를 통해 획득
12GB+ RAM (모델이 약 1.3GB 사용, Android가 약 4GB 사용, 나머지는 도구용)
USB WiFi 어댑터 오프라인 WiFi 침투 (breach) 모드용 (Ralink RT3572 권장)
커스텀 커널 (Custom kernel) 모니터 모드 (monitor mode)를 위한 MAC80211 포함 (빌드 가이드 참조)
NVIDIA AGX Tailscale을 통해 더 큰 모델로 오프로딩 (offloading) 하기 위한 용도
모든 추론 (inference)은 Adreno 650 GPU 상의 OpenCL을 통해 수행됩니다:
| 모델 | 양자화 (Quantization) | 프롬프트 속도 (Prompt Speed) | 생성 속도 (Generation Speed) |
|---|---|---|---|
| LFM2.5-1.2B-Instruct-Heretic (production) | Q8_0 | 115 tok/s | 13 tok/s |
| Qwen3.5-0.8B | Q8_0 | 30.5 tok/s | 6.3 tok/s |
| Qwen3.5-4B | Q4_0 | 10.1 tok/s | 2.0 tok/s |
참고: Android는 배터리 전원 사용 시 GPU 성능을 제한 (throttles) 합니다 (6배 느려짐). Nightcrawler에는 최대 성능을 강제하고 배터리 잔량이 15% 이하일 때 자동으로 성능을 제한하는 GPU governor 데몬이 포함되어 있습니다.
# 1. 설치 (Kali NetHunter chroot 내부에서)
bash INSTALL.sh
# 2. llama-server가 시작될 때까지 대기 (부팅 후 약 5분)
...
NC_DRY_RUN=1 python3 main.py
이 명령은 모의 (mock) Kali 서버를 사용하여 실제 네트워크 명령을 실행하지 않고도 에이전트 루프를 테스트할 수 있게 합니다.
kali-server-mcp --port 5000 &
python3 scope_proxy.py --config config.yaml --port 8800 --upstream http://127.0.0.1:5000 &
bash scripts/webui-daemon.sh start
...
배포 전 config.yaml을 수정하세요:
mission:
id: "CLIENT-YYYY-XXX" # 귀하의 engagement ID
scope:
...
**동적 범위 탐지 (Dynamic scope detection)**는 네트워크 간 이동 시 설정 변경이 필요 없음을 의미합니다. 에이전트는 시작 시 wlan0로부터 현재 서브넷 (subnet)을 읽어옵니다.
nightcrawler/
├── main.py # 진입점 (Entry point)
├── config.yaml # 미션 범위 + 모델 설정
...
에이전트는 단순하지만 효과적인 루프를 사용합니다:
대상 선정 (Pick a target)— 가중치 기반 무작위 선택 (알려진 포트가 있는 호스트 70%, 새로운 발견 30%)
컨텍스트 구축 (Build context)— 호스트 메모리, 네트워크 관찰 내용, 단계별 가이드를 프롬프트에 주입
LLM에게 질문 (Ask the LLM)— 모델이 REASONING: ... COMMAND: ...를 생성
검증 (Validate)— 범위 프록시 (scope proxy)가 명령이 범위 내에 있는지, 파괴적이지 않은지 확인
실행 (Execute)— Kali MCP 서버를 통해 명령 실행
학습 (Learn)— 출력 파서 (output parser)가 발견 사항을 추출하고 호스트 메모리 업데이트
컨텍스트 초기화 (Reset context)— 대화 내용을 지우고, 지속성 메모리 (persistent memory)는 유지하며 반복
1.2B 모델은 약 50%의 명령 성공률을 보입니다 (이는 모델 크기에 따른 내재적 특성입니다). 에이전트는 다음과 같은 방식으로 이를 보완합니다:
가비지 탐지 (Garbage detection)— 다양한 퓨샷 (few-shot) 예시를 활용하여 5회 연속 실패 시 초기화
중복 탐지 (Duplicate detection)— 도구 및 타겟의 다양화 강제
시간 기반 정체 탐지 (Time-based stuck detection)— 5분간 진행이 없을 경우 컨텍스트 초기화 강제
직접 플레이북 실행 (Direct playbook execution)— 다단계 공격 시 LLM을 완전히 우회
:8888 포트의 대시보드는 실시간 모니터링 및 제어 기능을 제공합니다:
라이브 피드 (Live feed)— 모든 명령, 발견 사항 및 에이전트의 결정 사항 표시
호스트 카드 (Host cards)— 포트, 서비스, 취약점을 보여주는 클릭 가능한 카드
네트워크 맵 (Network map)— 인터랙티브 포스 디렉티드 그래프 (drag, zoom, pan 지원)
취약점 상세 정보 (Vulnerability details)— CVE 태그, 익스플로잇 체인 (exploit chains), 조치 단계
C2 제어 (C2 controls)— 호스트 별표/블랙리스트 등록, 단계 강제, 일시 중지/재개, 명령 주입
오프라인 모드 (Offline mode)— 애니메이션 얼굴이 포함된 Pwnagotchi 스타일의 WiFi 공격 UI
대시보드는 스텔스 필터링이 적용되어 있습니다. 대상 네트워크로부터의 연결에 대해 nginx 헤더를 위장하고 빈 404 응답을 반환합니다.
여러 네트워크에서 72시간 이상의 자율 운영을 통해 얻은 결과는 다음과 같습니다:
- 네트워크당 30개 이상의 호스트 발견
- 2,000개 이상의 명령 자율 실행
- 여러 서비스에서 10개 이상의 취약점 발견
- 직접 실행을 통해 6개 이상의 플레이북 실행
- 에이전트 메모리는 전 과정 동안 35-50MB로 안정적 유지 (메모리 누수 없음)
기여(Contributions)를 환영합니다! 가이드라인은 CONTRIBUTING.md를 참조하세요.
모델 미세 조정 (Model fine-tuning)— 명령 형식 준수율을 약 50%에서 85% 이상으로 향상
새로운 플레이북 (New playbooks)— 더 많은 서비스를 위한 익스플로잇 체인 추가
CVE 데이터베이스 (CVE database)— 현재 24,956개의 항목을 넘어 커버리지 확장
어댑터 지원 (Adapter support)— 더 많은 USB WiFi 칩셋과의 테스트
문서화 (Documentation)— 다양한 스마트폰을 위한 튜토리얼 및 설정 가이드
테스트 (Testing)— 더 많은 테스트 커버리지 확보, 특히 엣지 케이스 (edge cases) 중심
# 리포지토리 클론
git clone https://github.com/garagehq/nightcrawler.git
cd nightcrawler
...
이 도구는 승인된 침투 테스트 (Penetration Testing) 용도로만 사용해야 합니다. Nightcrawler를 배포하기 전에 반드시 네트워크 소유자로부터 서면 허가 (Rules of Engagement)를 받아야 합니다. 본인이 소유하지 않았거나 테스트할 권한이 없는 네트워크에 대해 무단으로 사용하는 것은 불법입니다.
MIT — 자세한 내용은 LICENSE를 참조하세요.
이 프로젝트가 마음에 드신다면, 커피 한 잔을 후원하실 수 있습니다 ☕:
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Posts의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기