项目背景: 该项目作为作品集的一部分,展示了进攻性安全、并发性和分布式架构的概念。
在我早期涉足进攻性安全领域时,我一直对像 Shodan 这样的搜索引擎如何从数百万设备中索引信息感到着迷。这个想法一直在我脑海中盘旋;我需要通过自己模拟来理解其背后的工程原理。
Kimi 是这种好奇心的产物。它是一个持续侦察扫描器,旨在优先分析外部攻击面暴露情况。它执行大规模、面向端口的扫描,以收集来自连接到互联网的服务的信息。
我的目标是创建一个高效的架构:线程和队列的实现旨在最大化每个扫描周期的性能,显著减少大规模 IP 范围的执行时间。
Kimi 在关键领域作为概念验证:
并发性: 在 Python 中使用线程和队列来协调多达≈500个同时进行的网络 I/O 操作。
解耦架构: 设计分布式系统(Engine → API → DB),将扫描执行与数据持久化分离。
网络: 用于TCP/UDP握手和精确超时管理的低级套接字编程。
NoSQL 数据库: 实现 MongoDB 来存储扫描结果,这些结果本质上是可变且非结构化的。
今天重新审视 Kimi,让我能够将现代工程和伦理视角应用于我最初的工作:
技术演进: 最大的挑战是掌握 Python 中的 threading。今天,我认识到最可扩展的解决方案是将引擎迁移到异步编程(asyncio),以避免 GIL 开销并进一步扩展并发性。
伦理成熟: 最重要的教训是专业责任。该项目从一个好奇心驱动的实验演变为一个演示工具。Kimi 严格限于在受控网络上进行伦理测试,强调了我对合法和负责任的安全实践的承诺。
该系统分为引擎(扫描器)和API(持久化)。
MongoDB 充当主要的数据摄取存储。该架构设计为兼容 Elasticsearch / Kibana (ELK) 集成,从而实现对收集数据的全文搜索功能和分析可视化。
| 场景 | 命令示例 | 描述 |
|---|---|---|
| 快速扫描 | python3 engine.py -r 192.168.0.0,192.168.0.255 -t 150 --top-ports | 使用 150 个线程扫描一个范围。 |
部署: 该项目完全通过 Docker 进行容器化。
许可证: Apache 2.0。
法律免责声明: Kimi 仅用于教育目的和技术演示。在受控环境之外使用完全由用户自行承担责任。
| 自定义 CIDR | python3 engine.py -r 192.168.0.0/24 -t 350 -C 80 443 21 | 使用 350 个线程扫描特定端口。 |