老司机教你部署Cowrie蜜罐
0.蜜罐分类:
低交互:模拟服务和漏洞以便收集信息和恶意软件,但是攻击者无法和该系统进行交互; 中等交互:在一个特有的控制环境中模拟一个生产服务,允许攻击者的部分交互; 高交互:攻击者可以几乎自由的访问系统资源直至系统重新清除恢复。
1.cowrie简介
它是一个具有中等交互的SSH蜜罐,安装在Linux中,它可以获取攻击者用于暴力破解的字典、输入的命令以及上传或下载的恶意文件。攻击者在上传恶意文件后,执行恶意文件的操作均会失败,所以对蜜罐本身来说比较安全。
2.cowrie安装部署
以下步骤均为root权限执行
l 添加非root用户
adduser cowrie –p *******(设置密码,一路回车即可)
l 安装各种python相关包
apt-get install python-twistedpython-crypto python-pyasn1 python-gmpy2 python-mysqldb python-zope.interface
l 安装virtualenv
apt-get install virtualenv
l 下载cowire
cd /optgit clone http://github.com/micheloosterhof/cowrie
l 配置python虚拟环境
cd /opt/cowrie-master(cowrie-master就是我cowrie蜜罐的目录,如果目录不一致,重命名即可)virtualenv cowrie-envsource cowrie-env/bin/activate(cowrie-env) $ pip install twistedcryptography pyopenssl gmpy2
l 改变/opt/cowrie-master的拥有者
chown -R cowrie:cowrie /opt/cowrie-master
l 建立cowrie配置文件
cp cowrie.cfg.dist cowrie.cfg
l 修改日志的umask为0022(默认为0077)
cd /opt/cowrie-mastervi start.sh
l 修改蜜罐的SSH端口(默认为2222)
cd /opt/cowrie-mastervi cowrie.cfg
将linsten_port改为62223即可(最好大于60000,以防止被nmap默认扫描到)
l 将公网访问服务器22端口的请求做端口转发,转发到蜜罐的端口中
iptables -t nat -A PREROUTING -p tcp--dport 22 -j REDIRECT --to-port 62223
l 将真正的(非蜜罐)SSH管理端口改为65522
vi /etc/ssh/sshd_config
(备注:在第一次改SSH端口时,在前期测试时强烈建议同时保留22与65522,以防止修改保存后出现故障无法连接65522)
此处切换为cowrie用户操作
启动蜜罐
cd /opt/cowrie-master./start.sh
3. 数据库安装部署
cowrie中产生的日志杂乱无章,即使放到日志分析工具中也很难制定规则去筛选。然而cowrie具备将攻击IP、时间、历史执行命令等记录直接存在数据库中,下面将说明如何配置数据库。
需要root权限或者sudo
l 安装mysql基础环境
apt-get install libmysqlclient-devpython-dev pip install mysql-python apt-get install mysql-server python-mysqldb
l 配置数据库与表
使用root用户建立名为cowrie的数据库并将该库中的所有表授权给cowrie
mysql -u root -pEnter password: ******* mysql>CREATE DATABASE cowrie;mysql> GRANT ALL ON cowrie.* TOcowrie@localhost IDENTIFIED BY 'your_password';mysql>exit
此时进入cowrie安装目录中,使用cowrie用户登录数据库,进入cowrie库中,将/opt/cowrie/ doc/sql/mysql.sql作为数据源即可制成多个表。
cd /opt/cowrie-master mysql -u cowrie –pEnter password: ******* mysql>USE cowrie;mysql>source ./doc/sql/mysql.sqlmysql>exit
停止cowrie,修改配置文件中的数据库配置,使配置文件中的密码与cowrie数据库用户密码一致。
./stop.shvi cowrie.cfg
保存后退出,并su到cowrie用户重启蜜罐
./start.sh
cowrie库中的数据表如下:
4. 配置文件说明
data/userdb.txt——设置外部连接蜜罐时的密码,可以设置稍微复杂但是在攻击字典里,诱使攻击者进行暴力破解并获取其行为。
log/cowrie.json与 log/cowrie.log——均为日志
txtcmds/*——均为假的命令,其实打开就会发现完全就是txt
dl/*——攻击者上传的文件均会复制到这里
honeyfs/etc/motd——自定义欢迎/警告banner
5. 阶段成果
如果想查询蜜罐中是否有攻击者的痕迹,SSH登录服务器后进入数据库,使用cowrie库,查询auth、sessions、input等表即可。 公网恶意IP可以从sessions表中去重获取,算是少量的威胁情报了,部分恶意IP如下。
记录攻击者操作如下:
由上图可以看到攻击者在暴力破解成功后执行的命令,获取到这些恶意文件后进行分析,其大多数均为用于ddos的恶意程序,例如:
在长期收集蜜罐中的攻击者信息后,可以制定恶意IP列表直接在防火墙做阻断
*本文作者:RipZ,未经许可禁止转载
- Silverlight:页面/控件继承的二种写法
- java学习:Hibernate入门
- Silverlight Telerik控件学习:GridView双向绑定
- XmlWriter/XmlReader示例代码
- Silverlight Telerik控件学习:RadComboBox之自动完成(AutoComplete)
- Silverlight Telerik控件学习:数据录入、数据验证
- AI与自动驾驶
- python多线程学习笔记(超详细)
- Silverlight Telerik控件学习:RadTransitionControl
- Silverlight Telerik控件学习:弹出窗口RadWindow
- Andrew Ng机器学习课程笔记--week6(精度&召回率)
- Andrew Ng机器学习课程笔记--week5(下)
- silverlight: "[HtmlPage_NotEnabled] 调试资料字符串不可用"的解决
- Andrew Ng机器学习课程笔记--week5(上)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- mybatis扩展之自定义类型处理器处理枚举类型
- IMDB影评数据集预处理(使用word2vec)
- 【leetCode】使用两个栈搞一个队列day05
- bert训练代码
- mybatis文件映射之自定义返回结果集
- maven之第一个maven程序
- 【LeetCode】重建二叉树day04
- 【LeetCode】从尾到头反过来返回每个节点的值(用数组返回)day03
- mybatis文件映射之利用association进行关联查询(二)
- 【JUC】CountDownLatch你真的了解吗?
- mybatis动态sql之foreach补充(一)
- 【LeetCode】把字符串 s 中的每个空格替换成““%20””day02
- bert加载数据代码
- python爬虫--看看虎牙女主播中谁颜值最高
- 基于maven+ssm的增删改查之maven环境的搭建