关于DICOMHawk
DICOMHawk是一款功能强大且高效的 DICOM 服务器蜜罐,可以帮助广大研究人员检测和记录未经授权的访问尝试,旨在吸引和记录未经授权的访问尝试和交互。
DICOMHawk 使用 Flask 和 pynetdicom 构建,提供精简的 Web 界面,用于实时监控和管理 DICOM 交互。
功能介绍
1、DICOM 服务器模拟:支持 C-ECHO、C-FIND 和 C-STORE 操作,以模拟真实的 DICOM 服务器环境。
2、日志记录:详细记录 DICOM 关联、DIMSE 消息和事件特定数据,以跟踪和分析潜在攻击。
3、Web 界面:用户友好的 Web 界面,用于查看服务器状态、活动关联和日志。
4、自定义处理程序:轻松扩展以支持额外的 DICOM 服务和自定义日志记录或处理要求。
工具要求
1、Docker 和 Docker Compose;
2、在本地机器上安装 DCMTK 工具以供测试;
工具安装
克隆存储库:
git clone https://github.com/gtheodoridis/DICOMHawk.git cd dicomhawk
使用 Docker Compose 启动服务:
docker-compose up -d
此命令以分离模式启动 Flask 应用程序和日志服务器。Web 界面可通过端口 5000 访问,DICOM 服务器可监听端口 11112。或者,端口 104 也适用于 DICOM(ACR-NEMA)。
访问 Web 界面
打开 Web 浏览器并转到http://127.0.0.1:5000以访问 DICOMHawk Web 界面。在这里,可以监视服务器状态、查看活动关联并检查日志:
测试 DICOM 服务器
使用DCMTK工具与DICOM服务器交互。
C-ECHO(DICOM echo测试)
echoscu 127.0.0.1 11112
C-FIND(DICOM 查找测试)
创建查询文件,query.dcm其内容如下:
(0008,0052) CS [STUDY] # QueryRetrieveLevel (0010,0010) PN [Baggins^Frodo] # Patient's Name
运行 C-FIND 命令:
findscu -v -S -k QueryRetrieveLevel=STUDY -k PatientName=Baggins^Frodo 127.0.0.1 11112
C-STORE(DICOM存储测试)
要将 DICOM 文件发送到服务器,请使用以下storescu命令:
storescu 127.0.0.1 11112 path/to/your/file.dcm
日志和监控
DICOMHawk 提供详细的日志记录,帮助监控和分析与 DICOM 服务器的交互:
1、服务器日志:访问日志以查看有关 DICOM 关联和 DIMSE 消息的详细信息。
2、简化日志:查看简化日志以快速概览事件。
可以通过 Web 界面或直接访问日志服务器容器内的日志文件来查看这些日志。
docker-compose logs logserver
自定义开发
如果要更改 DICOMHawk 或扩展其功能,请修改源代码,然后重新启动服务:
docker-compose down docker-compose up -d
许可证协议
本项目的开发与发布遵循MIT开源许可协议。
项目地址
DICOMHawk:【GitHub传送门】