Cowrie 部署 SSH 蜜罐

什么是蜜罐

1、何谓SSH蜜罐,通俗的讲,就是用程序模拟一个SSH端口服务,让黑客以为是真的SSH服务连接上来,然后收集相关信息比如:IP、登录所用的账号、登录上来之后做了什么操作等等。
2、蜜罐其实就是一台无人使用但却被严密监控的网络主机,里面包含着各类虚假的高价值资源和一些已知漏洞,以此吸引入侵者来入侵该主机。并且在被入侵的过程中,实时记录和审计入侵者的所有入侵攻击流量、行为和数据。以此了解入侵者的攻击方式、手段和目的,便于后期快速完成对其的溯源和取证工作。
3、是建立在TCP/IP 5层模型的应用层的安全协议,专为远程登录会话和其他网络服务提供安全性的协议,在某种环境下 ,它可以有效的防止远程管理中的DNS欺骗和IP欺骗。
4、Cowrie是一种中等交互的SSH和Telnet蜜罐,旨在记录暴力攻击和攻击者执行的shell交互。Cowrie还充当SSH和telnet代理,以观察攻击者对另一个系统的行为。同时也是一个模拟的 SSH 服务器。很多攻击者都是 SSH 登录,你可以把这个软件在22端口启动,真正的 SSH 服务器放在另一个端口。
当别人以为攻入了服务器,其实进入的是一个虚拟系统,然后会把他们的行为全部记录下来。
在这里插入图片描述

文件目录及解释:

在这里插入图片描述

etc / cowrie.cfg-Cowrie的配置文件。缺省值可以在etc / cowrie.cfg.dist中找到。
share / cowrie / fs.pickle-伪造的文件系统
etc / userdb.txt-访问蜜罐的凭据
honeyfs / -伪造文件系统的文件内容-随时在此处复制实际系统或使用bin / fsctl
honeyfs / etc / issue.net-登录前横幅
honeyfs / etc / motd-登录后横幅
var / log / cowrie / cowrie.json-JSON格式的交易输出
var / log / cowrie / cowrie.log-日志/调试输出
var / lib / cowrie / tty /-会话日志,可使用bin / playlog实用程序重播。
var / lib / cowrie / downloads /-从攻击者传输到蜜罐的文件存储在此处
share / cowrie / txtcmds / -简单伪造命令的文件内容
bin / createfs-用于创建伪造的文件系统
bin / playlog-重放会话日志的实用程序

蜜罐的一些主要构成模块

1、按实现逻辑划分

  • 控制:将入侵者牢牢控制在指定的网络范围中,使其不能再以此机器作为跳板来攻击其它的机器。
  • 捕获:把入侵者在入侵过程中所产生的各种流量捕获住。
  • 分析:将捕获到的各种数据存到数据库或者其它指定地方,便于后续还原其详细的入侵攻击过程。

2、按具体实现过程划分

  • 监控各种主机项,如:进程、文件、注册表、网络等。
  • 同时提交给入侵检测,以识别其更详细的入侵手段,并对整个入侵过程做详细记录。
  • 入侵数据汇总分析,其实就是把上述两步所得到的各种数据进行集中分析,最后勾勒出完整的入侵轨迹画像。

3、最容易理解的说法

  • 蜜罐环境隔离: 使用虚拟环境将物理环境和蜜罐隔绝开,防止某些敏感操作在其真实的系统环境中进行造成破坏。
  • 敏感操作记录:把蜜罐中所有的入侵操作都写进数据库。
  • 邮件报警系统:蜜罐被入侵后自动发送报警邮件通知相关安全应急人员。

蜜罐的分类

1. 低交互蜜罐

低交互蜜罐最大的特点是:蜜罐为攻击者展示的所有攻击弱点和攻击对象都不是真正的产品系统,而是对各种系统及其提供的服务的模拟。由于它的服务都是模拟的行为,所以蜜罐可以获得的信息非常有限,只能对攻击者进行简单的应答。不过,它也是最安全的蜜罐类型。

2. 中交互蜜罐

中交互蜜罐是对真正的操作系统的各种行为的模拟,它提供了更多的交互信息,同时也可以从攻击者的行为中获得更多的信息。在这个模拟行为的系统中,蜜罐此时看起来和一个真正的操作系统没有区别,它们甚至是比真正系统还诱人的攻击目标。

3. 高交互蜜罐

高交互蜜罐具有一个真实的操作系统,它的优点体现在对攻击者提供完全真实的系统。当攻击者获得 ROOT 权限后,受系统、数据真实性的迷惑,他的更多活动和行为将被记录下来。缺点是被入侵的可能性很高,如果整个高交互蜜罐被入侵,那么它就会成为攻击者下一步攻击的跳板,不太安全。
简化版

蜜罐分类:
低交互:模拟服务和漏洞以便收集信息和恶意软件,但是攻击者无法和该系统进行交互;

中等交互:在一个特有的控制环境中模拟一个生产服务,允许攻击者的部分交互;

高交互:攻击者可以几乎自由的访问系统资源直至系统重新清除恢复。

什么是 Cowrie

Cowrie 是一个具有中等交互的 SSH 蜜罐,它可以获取攻击者用于暴力破解的字典、输入的命令以及上传或下载的恶意文件。所有这些攻击记录都会被记载到日志中,以便日后分析。

项目地址:https://github.com/cowrie/cowrie

Cowrie 安装部署

使用源码部署

本次搭建使用的基础环境是 Ubuntu ,以下步骤除切换到虚拟环境中的操作,其它均为 root 权限执行。

安装必要的支持软件

# Python 3
$ sudo apt-get install git python-virtualenv libssl-dev libffi-dev build-essential libpython3-dev python3-minimal authbind virtualenv

# Python 2
$ sudo apt-get install git python-virtualenv libssl-dev libffi-dev build-essential libpython-dev python2.7-minimal authbind

添加一个普通用户

对外提供服务的程序均以普通用户身份运行,能更好的保证服务器安全性。

$ sudo adduser --disabled-password cowrie
Adding user 'cowrie' ...
Adding new group 'cowrie' (1002) ...
Adding new user 'cowrie' (1002) with group 'cowrie' ...
Changing the user information for cowrie
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]

$ sudo su - cowrie

安装 Cowire

由于 Cowire 是采用 Python 开发,为了方便管理和安全,我们就直接将 Cowire 部署到 Python 的虚拟环境中。

下载 Cowire

$ cd /home/cowrie/
$ git clone https://github.com/cowrie/cowrie.git

在这里插入图片描述
在 Python 虚拟环境中安装 Cowire

  • 进入 Cowrie 所在目录,并安装虚拟环境
    $ cd /home/cowrie/cowrie
  • 使用 Python 3 创建虚拟环境
$ virtualenv --python=python3 cowrie-env
New python executable in ./cowrie/cowrie-env/bin/python
Installing setuptools, pip, wheel...done.
  • 使用 Python 2 创建虚拟环境
$ virtualenv --python=python2 cowrie-env
New python executable in ./cowrie/cowrie-env/bin/python
Installing setuptools, pip, wheel...done.

激活 Cowrie 环境,并安装必要的软件包

$ source cowrie-env/bin/activate
(cowrie-env) $ pip install --upgrade pip
(cowrie-env) $ pip install --upgrade -r requirements.txt

常见报错
在这里插入图片描述
原因:Ubuntu升级pip后,使用时出现了问题
解决办法:
sudo gedit /usr/bin/pip
这时打开了pip文件,修改

from pip import main  
if __name__ == '__main__':  
    sys.exit(main()) 
为

from pip import __main__  //修改
if __name__ == '__main__':  
    sys.exit(__main__._main())//修改

创建并修改 Cowire 的配置文件

(cowrie-env) $ cd etc/
(cowrie-env) $ cp cowrie.cfg.dist cowrie.cfg
(cowrie-env) $ vi cowrie.cfg

在这里插入图片描述
打开 SSH 服务,并且修改监听端口
[ssh]

# Enable SSH support
# (default: true)
enabled = true

listen_endpoints = tcp:2222:interface=0.0.0.0
  • 配置日志文件输出

默认情况下,Cowire 支持将日志输出到多个接收终端中。比如:文件文件、Cuckoo、ELK Stack、Graylog、Kippo-Graph、Splunk、SQL (MySQL、SQLite3、RethinkDB) 等等中。这里我们就来说说最常用的文本文件和 MySQL 数据库:

# 保存在文本文件中,需要配置以下一些内容。
[output_textlog]
enabled = true
logfile = ${honeypot:log_path}/audit.log
format = text
# 保存在数据库中,需要配置以下一些内容。
[output_mysql]
host = localhost
database = cowrie
username = cowrie
password = 123456
port = 3306
debug = false
enabled = true

如果是需要保存在 MySQL 数据库中,当然只配置是不行的,你还得需要有一个对应的数据库。如果你没有,可以按下面的步骤进行安装。

  • 安装 MySQL
$ sudo apt-get install mysql-server mysql-client libmysqlclient-dev python-mysqldb

设置数据库密码
在这里插入图片描述
在这里插入图片描述
安装成功后,你可以通过下面的命令测试是否安装成功。

$ sudo netstat -tap | grep mysql

在这里插入图片描述

  • 在 Python 虚拟环境中安装 MySQL 依赖包
$ source cowrie-env/bin/activate
$ pip install mysqlclient mysql-python

在这里插入图片描述
3、创建名为 cowrie 的数据库

$ mysql -u root -p
mysql> create database cowrie;

创建一个给 Cowrie 访问数据库的用户

mysql> GRANT INSERT, SELECT, UPDATE ON cowrie.* TO 'cowrie'@'localhost' IDENTIFIED BY 'PASSWORD HERE';
mysql>GRANT INSERT,SELECT,CREATE,UPDATE ON cowrie.* TO 'cowrie'@'localhost' IDENTIFIED BY '123456';

mysql> FLUSH PRIVILEGES;
mysql> exit

在这里插入图片描述
常见报错 :
在这里插入图片描述
解决办法 :https://blog.csdn.net/github_38336924/article/details/82702017

数据库和对应的数据库用户创建完成后,在数据库中导入初始数据的 SQL 语句

$ cd ~/cowrie/docs/sql/
$ mysql -u cowrie -p
mysql> USE cowrie;
mysql> source mysql.sql;
mysql> exit

在这里插入图片描述
常见报错 :用户cowrie没有权限
在这里插入图片描述
解决办法 :切换到root用户下面,退出mysql,使用账号密码登录 mysql -u root -proot
在这里插入图片描述
4、在 Python 虚拟
环境下启动蜜罐

(cowrie-env) $ bin/cowrie start
Activating virtualenv "cowrie-env"
Starting cowrie with extra arguments [] ...

在这里插入图片描述
常见报错 :
在这里插入图片描述

5、修改 SSH 默认的监听端口
在 root 用户下将 Ubuntu 自身的 SSH 监听端口进行更改,并修改 Iptables 规则。

首先,我们验证下是否安装 SSH。

$ ps -ef|grep sshd
root      2720     1  0 Nov 02 ? 00:00:00 /usr/sbin/sshd

如果输出结果和以上类似就证明已经安装,没有安装的话可以使用以下命令安装。

$ apt-get install openssh-server

安装完成后,我们可以修改 sshd_config 文件将默认端口改为一个较高的端口,这里为 51268 。

$ vim /etc/ssh/sshd_config
# Port 22
Port 51268

注意:一定不要与 cowrie.cfg 文件中监听的端口一致,否则进入 22 端口的流量就转发到真正的 SSH 服务端口,蜜罐就不起作用了。

6、配置 Iptables 进行端口转发
以上都配置好后,最后就是在 Iptables 中新增一条转发规则,将默认到 22 端口的请求转发到蜜罐中对应的端口。

$ sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
$ iptables-save

在这里插入图片描述
除了使用 Iptables 外,你还可以在没有 Root 权限的条件下使用 Authbind 或 Setcap 将蜜罐绑定到一些特权端口上,以达到伪装一些正常服务的目的。具体方法可以参见官方文档如下部分:

https://cowrie.readthedocs.io/en/latest/INSTALL.html#authbind

https://cowrie.readthedocs.io/en/latest/INSTALL.html#setcap

使用 Docker 部署

上面讲解的通过源码安装,主要是为了演示 Cowrie 如何工作的,当然最方便的还是直接使用 Docker 部署。

$ docker run -p 2222:2222 cowrie/cowrie
$ ssh -p 2222 root@localhost

如上所示,只需一条指令,Cowrie 就部署完成了。剩下就只需要自己用 Iptables 进行端口转发就可以了。

Cowrie 日志分析

蜜罐系统的作用主要是用作实时记录和审计入侵者攻击行为和数据,所以最重要的还是事后的日志分析工作。

如果日志记录在文本文件,你可以使用下面的命令进行一些数据统计分析。

$ grep login /home/cowrie/cowrie/var/log/cowrie/audit.log | awk '{print $5}' | sort | uniq -c

如果日志记录在数据库,你可以通过下面的一些方式进行一些数据统计分析。

$ mysql -u cowrie -p
mysql> USE cowrie;
mysql> SELECT * FROM auth;
+----+--------------+---------+----------+-------------+---------------------+
| id | session      | success | username | password    | timestamp           |
+----+--------------+---------+----------+-------------+---------------------+
|  1 | a551c0a74e06 |       0 | root     | 12345       | 2019-09-27 23:15:56 |
|  2 | a551c0a74e06 |       0 | root     | seiko2005   | 2019-09-27 23:15:58 |
|  3 | a551c0a74e06 |       0 | root     | anko        | 2019-09-27 23:15:59 |
|  4 | a551c0a74e06 |       0 | root     | 123456      | 2019-09-27 23:16:00 |
|  5 | a551c0a74e06 |       0 | root     | dreambox    | 2019-09-27 23:16:01 |

在这里插入图片描述
当然上面只是举了一些简单的例子,更多高级玩法还等着你去探索哟!

其它

目前开源的蜜罐系统有很多,除了 Cowrie 以外,还有 Kippo、T-Pot、MHN、SSH-Honeypot 等等。如果你对蜜罐系统很感兴趣,可以参考 GitHub 上以下两个开源项目。

https://github.com/jwxa2015/honeypotcollection
https://github.com/paralax/awesome-honeypots

至此,使用 Cowrie 快速构建一个蜜罐系统的基本方法就介绍完了。如果你对 Cowrie 非常的感兴趣,还可以去官网探索更多高级功能哟!

对于快速构建一个蜜罐系统,你还有哪些更好用高效的方法呢?欢迎大家在留言讨论哟!

参考文档

COWRIE蜜罐部署 (CentOS7):https://www.jianshu.com/p/3c58442411ab
SSH蜜罐cowrie实战(centos 7.0) : https://blog.csdn.net/RJ0024/article/details/86737475
Cowrie蜜罐部署教程 : https://www.cnblogs.com/HacTF/p/8094516.html
http://baijiahao.baidu.com/s?id=1646658246550997107&wfr=spider&for=pc
https://www.google.com

https://cowrie.readthedocs.io/en/latest/

https://www.cnblogs.com/bmjoker/p/10156220.html

https://www.cnblogs.com/HacTF/p/8094516.html

https://klionsec.github.io/2017/10/19/cowrie/

https://www.twblogs.net/a/5cb0b56bbd9eee48d788646c

https://ama2in9.top/2019/03/12/cowrie/

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值