
마이크로서비스 접근 방식으로 구축된 공격 표면 탐색 도구로, 멀티스레딩을 활용하여 빠르고 인터넷 규모의 자산 인덱싱을 수행합니다.
프로젝트 배경: 이 프로젝트는 공격 보안, 동시성, 분산 아키텍처 개념을 보여주는 포트폴리오 작품입니다.
공격 보안 세계에 발을 들여놓던 초창기, 저는 Shodan과 같은 주요 검색 엔진이 수백만 대의 장치에서 정보를 색인하는 방식에 항상 매료되었습니다. 이 개념이 머릿속에 맴돌았고, 직접 시뮬레이션하여 그 뒤에 숨은 엔지니어링을 이해해야 했습니다.
Kimi는 그 호기심의 결과물입니다. 외부 공격 표면 노출 분석을 우선시하도록 설계된 지속적인 정찰 스캐너입니다. 인터넷에 연결된 서비스에서 정보를 수집하기 위해 대규모 포트 중심 스캐닝을 수행합니다.
제 목표는 효율적인 아키텍처를 만드는 것이었습니다. 스레드와 큐의 구현은 스캔 주기당 성능을 최대화하고 대규모 IP 범위의 실행 시간을 크게 줄이도록 설계되었습니다.
Kimi는 중요한 영역에서 개념 증명 역할을 합니다:
동시성: Python에서 스레드와 큐를 사용하여 최대 약 500개의 동시 네트워크 I/O 작업을 조정합니다.
분리된 아키텍처: 스캔 실행과 데이터 영속성을 분리하는 분산 시스템 설계(엔진 → API → DB).
네트워킹: TCP/UDP 핸드셰이크를 위한 저수준 소켓 프로그래밍과 정밀한 타임아웃 관리.
NoSQL 데이터베이스: 본질적으로 가변적이고 비구조화된 스캔 결과를 저장하기 위한 MongoDB 구현.
오늘날 Kimi를 다시 살펴보면 초기 작업에 현대적인 엔지니어링 및 윤리적 관점을 적용할 수 있습니다:
기술적 진화: 가장 큰 도전은 Python에서 threading을 마스터하는 것이었습니다. 오늘날 가장 확장성 있는 해결책은 GIL 오버헤드를 피하고 동시성을 더 확장하기 위해 엔진을 비동기 프로그래밍(asyncio)으로 마이그레이션하는 것임을 인식합니다.
윤리적 성숙: 가장 중요한 교훈은 전문적 책임이었습니다. 프로젝트는 호기심에서 비롯된 실험에서 데모 도구로 발전했습니다. Kimi는 통제된 네트워크에서의 윤리적 테스트로 엄격히 제한되며, 합법적이고 책임 있는 보안 관행에 대한 저의 헌신을 강조합니다.
시스템은 **엔진(스캐너)**과 **API(영속성)**로 나뉩니다.
MongoDB는 기본 수집 저장소 역할을 합니다. 아키텍처는 Elasticsearch / Kibana (ELK) 통합과 호환되도록 설계되어 수집된 데이터의 전체 텍스트 검색 기능 및 분석 시각화를 가능하게 합니다.
| Scenario | Command Example | Description |
|---|---|---|
| 빠른 스캔 | python3 engine.py -r 192.168.0.0,192.168.0.255 -t 150 --top-ports |
배포: 프로젝트는 Docker로 완전히 컨테이너화되어 있습니다.
라이선스: Apache 2.0.
연락처: [email protected]
법적 면책 조항: Kimi는 교육 목적 및 기술 시연용으로만 제공됩니다. 통제된 환경 외부에서의 사용은 전적으로 사용자의 책임입니다.
| 150개의 스레드를 사용하여 범위를 스캔합니다. |
| 사용자 정의 CIDR | python3 engine.py -r 192.168.0.0/24 -t 350 -C 80 443 21 | 350개의 스레드를 사용하여 특정 포트를 스캔합니다. |