什么是蜜罐

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 = truelisten_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#authbindhttps://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/

Cowrie 部署 SSH 蜜罐相关推荐

  1. Kippo:一款强大的SSH蜜罐工具

    前言 首先给大家介绍一下蜜罐,蜜罐最为重要的功能是对系统中所有操作和行为进行监视和记录,他可以帮助我们追踪溯源.简单的说蜜罐就是一个"假目标",故意暴露一个网络中的弱点给攻击者,攻 ...

  2. 【ECS最佳实践】性能测试及ECS+RDS构建云服务器主动防御系统部署开源蜜罐系统Hfish

    云服务器ECS(Elastic Compute Service)是阿里云提供的性能卓越.稳定可靠.弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务.云计算最基 ...

  3. 【阿里云ECS最佳实践】ECS+RDS构建云服务器主动防御系统部署开源蜜罐系统Hfish及ECS周边功能测试

    点击免费领取ECS,云上部署轻松搞定:https://click.aliyun.com/m/1000370355/ 云服务器ECS(Elastic Compute Service)是阿里云提供的性能卓 ...

  4. ansible 部署ssh 偶尔巨慢的解决方法

    ansible 部署ssh 偶尔巨慢,以前没留意,今天实在登录不上了,于是专门来解决下. ssh java@10.255.253.58 -vvvv debug 调试: 修改 /etc/ssh/ssh_ ...

  5. kippo mysql_Kippo:一款优秀的SSH蜜罐开源软件.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava Kippo:一款优秀的SSH蜜罐开源软件.pdf8页 ...

  6. 怎么一步步自建CentOS7 Minimal平台部署SSH远程登陆

    怎么一步步自建CentOS7 Minimal平台部署SSH远程登陆 ​ 首先,你得下载一个CentOS7 Minimal的镜像,我是在官网下载的 https://www.centos.org/down ...

  7. oschina git服务, 如何生成并部署ssh key

    1.如何生成ssh公钥 你可以按如下命令来生成 sshkey: ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Generating public ...

  8. myeclipse部署ssh项目工程

    为什么80%的码农都做不了架构师?>>>    今天利用myeclipse搭建了一个ssh框架,现在小编将详细的步骤写下来,以供搭建学习交流. 步骤阅读 工具/原料 myeclips ...

  9. 大规模集群自动化部署SSH无密码登陆

    大家需要在每个节点上提前装好"expect"工具 expect的使用请看我的另一篇文章: http://tianxingzhe.blog.51cto.com/3390077/168 ...

最新文章

  1. WinDbg 调试命令记录二 (基础CLR查看)
  2. TP的中间件:过滤处理HTTP的请求与响应
  3. 【Linux】编译C语言文件(-o -lpthread)
  4. audio 上一首 下一首 自定义样式_被 iPhone 吹爆的最香功能,安卓也终于安排上了...
  5. python django 动态网页_Django-手撸简易web框架-实现动态网页-wsgiref初识-jinja2初识-python主流web框架对比-00...
  6. indesign拖进去颜色变灰_在 InDesign 中管理颜色
  7. LocalDate,LocalDate,LocateDateTime的常用方法
  8. 深度学习入门-基于python的理论与实现-深度学习
  9. 什么是 Hook 技术
  10. 苹果手机如何分享wifi密码_怎样用手机改wifi密码
  11. 《数据库系统概论》| 第四章 数据库安全性 知识梳理
  12. bailian.openjudge 2692:假币问题
  13. 太强了!!!GNN + PLM→CIKM'22最佳论文
  14. 如何实现地图App中附近地点搜索及聚合标记功能
  15. solidworks显示无法连接到服务器,SOLIDWORKS Electrical—无法连接协同服务器
  16. android系统目录和作用是什么意思,安卓Android手机系统内文件夹目录解释
  17. 简单易学的机器学习算法——梯度提升决策树GBDT
  18. itools官方中文版2014 v2.0.3.8_苹果同步软件
  19. C语言上学期整理(第6章)
  20. PCB地与机壳电容连接 转

热门文章

  1. 手机网站按住放大图片_如何用PPT制作放大镜效果?ppt怎样实现放大镜效果?PPT放大镜效果教学?...
  2. 数据结构排序系列详解之二 希尔排序
  3. HTML5开源RPG游戏引擎lufylegendRPG 0.1发布
  4. Win8 DirectX 开发问题总结(一)
  5. Android中Bitmap和Drawable 总结
  6. oc代码混淆_OC代码混淆工具
  7. laravel nginx配置_nginx高可用
  8. SQLAlchemy的使用---M2M增删改查
  9. Android 简单实现控件的拖动
  10. Scala的sealed关键字