blackhole部署说明
提示:
sudo su -跳转到root账户
install
sudo apt install python
sudo git clone https://github.com/dudeintheshell/blackhole.git
cd blackhole
sudo apt-get install python-virtualenv python-setuptools python-dev build-essential
sudo virtualenv env
source env/bin/activate
sudo pip install gevent
注释:
virtualenv
是一个工具,用于创建独立的Python环境,这样你就可以在一个项目中安装特定版本的Python库,而不会影响系统上其他Python项目或系统Python环境。python3-virtualenv是专门为Python 3设计的版本
source env/bin/activate
是一个命令,用于激活一个使用 virtualenv 或 Python 自带的 venv 创建的虚拟环境。当你运行这个命令时,它会修改你的 shell 环境,使得后续执行的 Python 命令都在这个虚拟环境中运行
pip install gevent
pip 是Python的包管理工具,它可以帮助你安装、更新和卸载Python的库和工具。
install 是告诉pip你想要安装某个东西。
gevent 是一个Python的库,它可以让你的Python程序运行得更快,特别是当你需要处理大量的网络请求或者并发任务时。
创建没有密码的自签名 SSL 证书
这是支持 HTTPS 请求所必需的。
如何为测试服务器创建没有密码的自签名 SSL 证书-贾斯汀·凯利
使用 openssl 生成密钥
openssl genrsa -out ssl.key 1024
创建“证书签名请求” - 并将密码留空
openssl req -new -key ssl.key -out ssl.csr
创建SSL证书
openssl x509 -req -days 366 -in ssl.csr -signkey ssl.key -out ssl.crt
设置 iptables 规则
- tcp和udp流量定向流动到blackhole
sudo iptables -t nat -A PREROUTING -p tcp --dport 1:65535 -j REDIRECT --to-ports 5000
sudo iptables -t nat -A PREROUTING -p udp --dport 1:65535 -j REDIRECT --to-ports 5000
iptables
: 命令行工具,用于配置 Linux 内核防火墙规则。-t nat
: 指定操作的是 NAT 表。NAT 表用于网络地址转换。-A PREROUTING
: 在PREROUTING
链中添加一条新规则。PREROUTING
链用于处理路由选择之前的数据包。-p tcp/udp
: 仅匹配 TCP UDP协议的数据包。--dport 1:65535
: 匹配目标端口范围为1
到65535
的数据包。这实际上匹配了所有可能的 TCP 端口。-j REDIRECT
: 跳转目标为REDIRECT
,即重定向数据包。--to-ports 5000
: 将数据包重定向到本地的5000
端口。
运行黑洞
source env/bin/activate
python blackhole.py
专有名词注释(人话)
-[ ] Blackhole: 是一个低交互性的蜜罐,可以捕获和记录所有内容。使用 iptables,所有传入的 TCP 和 UDP 请求都被重定向到单个端口,因此看起来蜜罐似乎正在侦听所有端口。Telnet(23) 和 HTTPS ([0-65]443) 请求以有限的方式得到支持。蜜罐被编写为PoC来捕获所有请求,因此功能有限。
-[ ] iptables: 可以被看作是一个Linux上的“守门员”,它负责检查和控制进出计算机的数据包。当计算机连接到互联网或局域网时,iptables就能帮助筛选哪些数据包可以进入或离开计算机,这样就能增强计算机的安全性。
-[ ] Telnet(23)请求: Telnet就像是一把神奇的钥匙,可以打开远程计算机的“大门”。当你想要进入某个远程主机程序,就像想要进入别人的家一样,你就得用Telnet这把钥匙。
-[ ] PoC(Proof of Concept): 而蜜罐如果是个PoC版本,那它就像是一个简易版的“陷阱玩具”,用来展示怎么吸引和记录攻击者的动静。
-[ ] nf_conntrack: 是Linux内核里一个“记忆助手”,专门用来记住电脑上的网络连接信息。它像一个侦探,跟踪着每一个网络连接的“足迹”,记录下每个连接的细节,比如是谁发起的连接、连接的目标是谁、用了什么端口等等。这样,当需要处理网络数据包时,其他模块就能借助nf_conntrack的“记忆”来做出正确的决策。