PS:测试过程中有的忘却截图了,就直接用的原文章的图片。翻译过程中做了少量的修正,英语好的可以直接看原文。
这篇文章中,紧张谈论蜜罐和蜜罐网络,以及如何利用它们保护真实的系统,我们称之为这个别系为MHN(Modern Honey Network,当代蜜网),它可以快速支配、利用,也能够快速的从节点网络数据。
蜜罐是存在漏洞的,暴露在外网或者内网的一个虚假的机器,具有以下这些特色:

1.个中主要的一点机器是虚假的,攻击者须要花费韶光攻破。在这段韶光内,系统管理员能够锁定攻击者同时保护真正的机器。
2.能够学习攻击者针对该做事的攻击技巧和利用代码。
3.一些蜜罐能够捕获恶意软件,利用代码等等,能够捕获攻击者的0day,同时可以帮助逆向工程师通过剖析捕获的恶意软件来提高自身材系的安全性
4.在内网中支配的蜜罐可以帮助你创造内网中其他机器可能存在的漏洞。
蜜罐是把双刃剑,如果不能精确的利用,有可能遭受更多的攻击,仿照做事的软件存在问题,也会产生新的漏洞。
蜜罐分为几下几类:
1.低交互式:低交互式仿照常规的做事,做事存在漏洞,但是仿照的这些漏洞无法被利用,开拓和掩护这种类型的蜜罐比较随意马虎。
2.高交互式:高交互式利用的是真实的做事,有助于创造做事存在的新漏洞,同时能够记录所有的攻击,但是,支配困难、掩护本钱高,一旦做事上存在的漏洞被利用,随意马虎引发新的安全问题。
3.粘性蜜罐(Tarpits):这种类型的蜜罐,利用新的IP来天生新的虚拟机,仿照存在做事的漏洞,来做诱饵。因此攻击者会花费永劫光来攻击,就有足够的韶光来处理攻击,同时锁定攻击者。
还有其他类型的蜜罐,比如专门捕获恶意软件的,数据库漏洞利用程序和垃圾邮件等等。当支配两个或者两个以上蜜罐时可以称之为蜜网。
网上关于蜜罐的一些定义:
1.什么是蜜罐:
http://www.sans.org/security-resources/idfaq/honeypot3.php
2.蜜网:
http://www.honeynet.org/
3.蜜罐项目:
https://www.projecthoneypot.org/,攻击者的IP和攻击者的一些数据统计。
4.蜜罐的wiki:
http://en.wikipedia.org/wiki/Honeypot_(computing)
0x02 当代密网(MHN)MHN是一个开源软件,它简化了蜜罐的支配,同时便于网络和统计蜜罐的数据。用ThreatStream(http://threatstream.github.io/mhn/)来支配,MHN利用开源蜜罐来网络数据,整理后保存在Mongodb中,网络到的信息也可以通过web接口来展示或者通过开拓的API访问。
MHN能够供应多种开源的蜜罐,可以通过web接口来添加他们。一个蜜罐的支配过程很大略,只须要粘贴,复制一些命令就可以完成支配,支配完成后,可以通过开源的协议hpfeeds来网络的信息。
MHN支持以下蜜罐:
1.Sort:https://www.snort.org/
2.Suricata:http://suricata-ids.org/
3.Dionaea:http://dionaea.carnivore.it/,它是一个低交互式的蜜罐,能够仿照MSSQL, SIP, HTTP, FTP, TFTP等做事 drops中有一篇先容:http://drops.wooyun.org/papers/4584
4.Conpot:http://conpot.org/
5.Kippo:https://github.com/desaster/kippo,它是一个中等交互的蜜罐,能够下载任意文件。 drops中有一篇先容:http://drops.wooyun.org/papers/4578
6.Amun:http://amunhoney.sourceforge.net/,它是一个低交互式蜜罐,但是已经从2012年之后不在掩护了。
7.Glastopf:http://glastopf.org/
8.Wordpot:https://github.com/gbrindisi/wordpot
9.ShockPot:https://github.com/threatstream/shockpot,仿照的CVE-2014-6271,即破壳漏洞
10.p0f:https://github.com/p0f/p0f
0x03 MHN的硬件哀求MHN做事器:
4 GB RamDual Core Processor40 Gb Drive
蜜罐:
512 Mb – 1 GbDual Core CPU20 Gb Drive
详细支配时取决以蜜罐所在的位置,在防火墙后面或者在直接暴露在互联网上,被攻击次数不同,花费的资源肯定也不同。如果只是测试着玩256M的内存就足够了。
0x04 MHN的安装由于ThreatStream有支配脚本,以是安装MHN很大略,我们在只安装了OpenSSH的Ubuntu 14.04 LTS (64 bits)上进行测试,安装步骤如下:
sudo apt-get update && sudo apt-get upgradesudo apt-get install gitcd /optsudo git clone https://github.com/threatstream/mhncd /opt/mhn/scripts
新版本中已经做了修正,安装前可以做一下检讨
sudo vim install_mnemosyne.sh
找到修正CHANNELS,添加shockpot.events 修正成下面的样子
CHANNELS=’amun.events,conpot.events,thug.events,beeswarm.hive,dionaea.capture,dionaea.connections,thug.files,beeswarn.feeder,cuckoo.analysis,kippo.sessions,glastopf.events,glastopf.files,mwbinary.dionaea.sensorunique,snort.alerts,wordpot.events,p0f.events,suricata.events,shockpot.events’sudo ./install_hpfeeds.shsudo ./install_mnemosyne.sh sudo ./install_honeymap.sh
安装完成后实行sudo supervisorctl status看到四个做事起来了
机器位于公网,就可以跳过这一步,如果只是放在内网里面,则须要配置mnemosyne的配置文件
sudo vim /opt/mnemosyne/mnemosyne.cfgignore_rfc1918 = False
许可节点利用私有地址和做事器进行通信
重启做事
sudo supervisorctl restart mnemosyne
运行末了一个脚本,对MHN进行配置
sudo ./install_mhnserver.sh ===========================================================MHN Configuration===========================================================Do you wish to run in Debug mode?: y/n nSuperuser email: name@example.comSuperuser password: Superuser password: (again): Server base url [“http://1.2.3.4″]: http://192.168.5.3Honeymap url [http://1.2.3.4:3000]: http://192.168.5.3:3000Mail server address [“localhost”]: Mail server port [25]: Use TLS for email?: y/n yUse SSL for email?: y/n yMail server username [“”]: Mail server password [“”]: Mail default sender [“”]: Path for log file [“mhn.log”]:
这个过程须要比较长的韶光,须要初始化数据库,同时还要插入Snort/Suricata规则,脚本运行结束后,直接访问配置中定义的base url,登录后就可以配置
0x06 MHN做事器安装一旦安装了根本的做事,就能够支配蜜罐节点了,通过web来展示干系数据等等,可以根据详细的情状做一些大略的调度。
例如要非匿名的将网络到得攻击数据回传到ThreatStream,要做以下操作
cd /opt/mhn/scriptssudo ./disable_collector.sh
实行enable_collector.sh可以开启
如果想修正smtp做事的配置,可以编辑config.py,
绝对路径
/opt/mhn/server/config.py cd /opt/mhn/serversudo vim config.py sudo supervisorctl restart mhn-uwsgi
只管即便不要利用超级管理员来配置,可以从web页面中添加其他的用户,但是所有用户都是超级用户,没有任何差异,当你删除用户的时候,实际上并没有吧该用户删除,只是在数据库中标记为”not active”,同时该用户不能再次被利用,除非变动数据库。
也可以从终端去直接变动用户的密码
sudo sucd /opt/mhn/source env/bin/activatecd serverpython manual_password_reset.pydeactivateexit0x07 排错
如果创造做事不正常,你可以利用一些命令和排查一些日志来来判断问题出在哪里,第一个命令便是supervisorctl,可以看到那些进程出问题了,那些在正常的运行
supervisorctlv status#列出所有进程的状态supervisorctl restart [process|all]#重启单个或者全部进程supervisorctl start [process|all]#开始单个进程或者全部进程supervisorctl stop [process|all]#停滞单个进程或者全部进程
如果你创造一个进程的状态为ERROR或者FATAL,就需在 /etc/supervisor/conf.d/找到对应进程的配置文件,查看日志进行剖析 https://github.com/threatstream/mhn/wiki/MHN-Troubleshooting-Guide,寻求帮助 碰着的问题:
1.honeymap在安装的时候报错
hg clone http://code.google.com/p/go.net/ mv go.net/ /opt/honeymap/server/src/code.google.com/p/go buildsupervisorctl restart honeymap0x08 MHN的web接口
MHN的web接口是很简洁明了的,第一次访问web截面时,须要输入账户名和密码,登录成功后会瞥见一个总结性的页面
1.在最近24小时内有多少攻击着攻击
2.攻击次数排在前五的IP
3.被攻击端口排在前五的端口
4.top 5的攻击署名
还有一些菜单选项可以进行配置或者获取更多的攻击细节
Map:查看攻击者的IP在环球的分布
Deploy:添加,编辑和利用蜜罐的支配脚本
Attacks:所有攻击者的列表
Payloads:所有攻击的payload,实在只有三种蜜罐可以网络payload(snort,dionaea.glastofp)
Rules:所有的snort和suricata规则
Seneors:有安装蜜罐节点操作的干系记录
Settings:MHN做事的设置
攻击来源环球的分布图,运行在3000端口,是不须要验证就能看到的,可以做ACL开掌握访问。
0x09 蜜罐节点
这一节中,紧张谈论蜜罐,如何安装,多么随意马虎操作,以及会涌现的问题,是否须要在进行分外的配置等等。也会进行一些测试,看攻击者如何攻击,蜜罐对攻击行为的记录。末了会谈论MHN如何网络信息,以及web所展现的数据。
9.1 安装蜜罐节点
安装蜜罐节点很随意马虎,所有的节点都基于同样的平台,MHN上对每个蜜罐都有对应的安装脚本,以是安装起来是非常随意马虎的,只须要一个做事器去安装。
我们在Ubuntu 14.04 LTS 上进行测试。建议通过ssh去访问,如果不可以,请安装ssh,修正对应的22端口,同时加防火墙保护
安装ssh
sudo apt-get update && sudo apt-get upgrade && sudo apt-get install openssh-server
修正端口为2222
vim /etc/ssh/sshd_configPort 2222
重启做事
sudo service ssh restart
定义的安装脚本在MHN做事器的web界面中,在”Deploy”这个选项下有所有蜜罐的安装脚本。
http://192.168.5.11/ui/manage-deploy/?script_id=11
安装完成后可以通过以下命令来检讨
sudo netstat –tunlp#产看当前的网络连接情形supervisorctl status#查看运行状态
9.2 Wordpot
首先,安装一个wordpress蜜罐在Ubuntu 14.04 LTS上,安装完成后 sudo netstat –tunlp查看80端口是否打开, sudo supervisorctl status可以查看做事的运行状态。 访问后该ip,看到下图
如果想变动wp的插件和干系设置,
vim /opt/wordpot/wordpot.conf
利用nmap扫描该80端口
nmap -A -Pn -p80 192.168.10.21
通过nmap识别80看到的是wordpress 2.8,运行的http版本是0.96,识别出来的python 2.7.6的版本。这种端口扫描不会被记录,回传到MHN做事。
利用wpscan进行扫描
wpscan –url http://ip/
9.3 p0f被动指纹识别系统
p0f是一个被动的系统指纹识别工具,借助它可以快速识别操作系统的类型和其他的信息,它在MHN中支配也是很随意马虎的,p0f有可以根据已有的指纹,能够快速的匹配,虽然不是一个精确打算,但是识别度很高。
通过netstat命令的输出可以看到没有p0f没有去新建新的进程来实现网络监听。
如果所要保护的ssh端口处于防火墙后或者前端有一个IPS/IDS,获取这些数据的时候就比较麻烦。
如果我们在安装了wordpot的机器上安装p0f,一个访问wordpot的80端口的要求不会触发wordpot的报警,但是p0f会触发,MHN只是能够显示攻击者攻击的端口,但是不能显示关于操作系统类型,uptime和其他的信息。p0f的日志是纯文本的,剖析和网络数据不是太随意马虎,还好p0f存在API,还有一些其他的工具,可以帮助我们快速剖析。
如果须要正在进行攻击的系统系统的信息,可以从/var/log/p0f.out中提取,可以利用python、bash、sed、grep等来帮助你快速的获取想要的信息。 想要获取干系ip的系统信息,可以利用以下这个命令
grep -n “[ 192.168.10.151.(syn)|oss=” /var/log/p0f.out
如果想要得到更多关于p0f的信息,访问 http://www.sans.org/security-resources/idfaq/p0f.php,查看干系接口信息https://github.com/p0f/p0f/blob/master/docs/README,还有很主要的一点,p0f把攻击的信息保存在MHN做事的mongodb中,其他的一些信息,如操作系统类型等信息没有展现出来,有可能下一个版本会对这些信息进行展示。
9.4 kippo蜜罐
kippo是一个中等交互式的ssh蜜罐,安装它很随意马虎,但是要把稳以下
1.ssh做事默认监听的是22端口,/etc/ssh/sshd_config为默认配置文件,要想正常运行,须要修正监听端口到2222。
2.安装完成后须要重启做事。
3.supervisor可以使kippo程序运行,但是不能够停滞它,这须要修正支配脚本
进入web的deploy界面,选择kippo,在支配脚本后添加下面这些东西
command=/opt/kippo/start.sh #modify this command for the line belowcommand=su kippo -c “authbind –deep twistd -n -y /opt/kippo/kippo.tac -l /opt/kippo/log/kippo.log –pidfile /opt/kippo/kippo.pid”stopsignal=QUIT #Modify this line for the line belowstopasgroup=true
编辑完成后点击update保存,安装完成后就可以看到kippo监听在22端口,ssh做事在2222端口,下次ssh登录的做事器的时候须要指定ssh -p 2222 ip,否则登录的为kippo。
以下是一些关于kippo的先容,包括如何配置以及事情事理:
1.默认的ssh登录账户名密码为root/12345,也可以进行配置,配置的路径在 /opt/kippo/data/userdb.txt,同时当攻击者上岸后,利用useradd和passwd添加账户和密码的时候也会保存在这个文件里面.2.当攻击者下载文件时,下载的文件会被保存在/opt/kippo/dl3.可以设置蜜罐中命令实行后的返回值,也可以添加命令.例如来修正ifconfig命令的输出,可以编辑/opt/kippo/txtcmds/sbin/ifconfig这个文本文件。4.有一个特点便是,当攻击者输入exit想退出的时候,实在没有退出,只是显示退出,给攻击者一个假象,以为回到的他的本机,他接下来的操作还是会被记录到日志中。5.你可以变动/opt/kippo/honeyfs,里面保存仿照的系统的文件等内容,使蜜罐更像真实环境。6.log存储在/opt/kippo/log/kippo.log,你也可以修正配置,把log存储到数据库中,数据库的表构造在 /opt/kippo/doc/sql目录中。7.每一次登录成功后的操作都会把日志单独再存储一份,存储的路径在/opt/kippo/log/tty,可以通过在/opt/kippo/utils中的playlog.py脚本,来重现这个操作过程。
安装和配置kippo后,如果有人考试测验登录,会被记录登录所利用的用户名和密码。
我们用nmap来扫描,看到以下信息
根据nmap的输出,我们看到22端口已经被识别为ssh做事,个中输出的ssh版本能够在kippo.cfg中被修正,这种大略的扫描是不会在MHN做事上产生记录的 如果我们利用hydra(https://www.thc.org/thc-hydra/),去进行暴力破击(hydra -l root -P darkc0de.lst ssh://192.168.10.21),hydra在连接的时候 会涌现一些问题,但是我们利用 medusa(http://foofus.net/goons/jmk/medusa/medusa.html)时,暴力破解的命令如下
medusa -u root -P darkc0de.lst -M ssh -h 192.168.10.21
每进行一次考试测验登录,都会产生一条扫描记录,如果想更理解kippo,可以参考http://edgis-security.org/honeypot/kippo/
9.5 Suricata网络入侵检测和阻挡引擎
Suricata的支配脚本没有问题,直接实行就好了,支配完成后须要重启做事。Suricata是一个IDS,监听的接口为eth0,规则是通过crontab中的/etc/cron.daily/update_suricata_rules.sh脚本,每天都从MHN做事更新的(可以开启或者关闭规则)
正如supervisor显示的,只有一个进程,没有天生其他的做事,由于他只是一个IDS,如果我们利用nmap进行扫描,只看到一个ssh做事,这侧扫描会被记录,同时在MHN中显示
Sensor Log:
MHN Server:
Suricata只会把攻击报告给MHN做事,但是攻击细节存储在Suricata的日志中,不会被显示
1./var/log/suricata.log:日志记录了Suricata进程干系的信息,如启动报错,缺点的规则等等,这份日志由supervisor产生2./var/log/suricata/:设计到suricata操作的输入日志,报警日志,http要求日志,dns要求日志等等3./var/log/suricata/http.log:http要求,不是报警4./var/log/suricata/fast.log:一行存储一个报警5./var/log/suricata/eve.json:格式为json,包含报警和干系的事宜6./var/log/suricata/unified2.alert:报警文件为Barnyard2格式(http://www.forensicswiki.org/wiki/Barnyard2)
Suricata的配置文件
1./opt/suricata/etc/suricata/classification.config :报警的优先级2./opt/suricata/etc/suricata/reference.config :利用的漏洞数据库3./opt/suricata/etc/suricata/suricata.yaml :suricata的配置文件4./opt/suricata/etc/suricata/reference.config :通过配置来减少报警的数量,例如不想记录所有ICMP要求的来源为一样的IP
IDS/IPS配置是很繁芜的,这里只是大略的解释,须要详细理解suricata的,访问这里http://suricata-ids.org/docs/
9.6 snort
snort是像Suricata一样的IDS/IPS,和Suricata利用类似的规则,同时事情办法也很像,同样支配脚本没有问题,通过crontab.daily来更新规则库,不会其他用来监听连接的做事
它的配置文件和Suricata利用的suricata.yaml很像,它的配置文件为snort.conf,日志存储在/var/log/snort/alert目录下.
想更加理解snort,访问https://www.snort.org/
9.7 Amun
Amun蜜罐已经好久没有更新了,这里不做过多的谈论。
9.8 Shockpot
Shockpot是一个web蜜罐,用来仿照破壳漏洞,CVE-2014-6271 http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271,破壳漏洞是一个影响很广泛的漏洞,影响Mac OsX,Linux和Unix,这个漏洞产生在GNU Bash(shell)上,许可远程命令实行,虽然已经涌现了补丁,但不是所有的机器都有更新。利用这个蜜罐,可以用来捕获这个漏洞的利用代码,
关于这个漏洞的详情https://shellshocker.net/
支配脚本有一些问题,进入Deploy页面,选择Shockpot对期做一点修正,在"#Config for supervisor. "和"EOF"中加入一下代码
[fetch_public_ip]enabled = falseurls = [“http://api.ipify.org\"大众,”http://bot.whatismyipaddress.com/”]
如果做事器有公网IP,就加入上面这一段.
安装完成后重启做事
看到以下运行的进程,有一个新的做事在80上监听
如果通过浏览器去访问http://ip ,会看到”It Works!”这个默认的Apache页面
telnet ip 80GET / HTTP/1.0
返回以下头部
显示这是一个Debian做事器,利用了PHP和OpenSSL
nmap -A -p80 192.168.10.21
上面的这些操作MHN是不会记录的,下面我们来攻击蜜罐
curl -H “User-Agent: () { :; }; /bin/ping -c 1 TARGET_HOST_IP” http://SHOCKPOT_IP
我看看到日志里输出/var/log/shockpot/shockpot.log report
MHN中的记录
更多关于破壳的利用https://blog.cloudflare.com/inside-shellshock/
9.9 Conpot
Conpot是一个工业掌握系统和Scada蜜罐,针对这些类型的攻击是在近几年快速增长,是由于安全在工业系统中哀求较低,才造成了现在这种场面,安全专家们也在想办法保护这些薄弱的系统。
安装大略,安装完成后须要重启做事,利用supervisorctl status 可以看到一个进程,但是利用netsta 可以看到好几个监听的端口。
Conpot利用了一些模块,能够供应以下做事
MODBUS TCP —> tcp/502HTTP —> tcp/80SNMP —> udp/161S7COMM —> tcp/102
利用nmap扫描
nmap -A -p1-1000 192.168.10.21
nmap -sU -p161–script snmp-sysdescr 192.168.10.21
产生的记录
9.10 Glastopf
Glastopf是最好的web蜜罐,它仿照了很多漏洞,特殊是远程文件包含漏洞,可以捕获到攻击只插入的文件.支配依旧很大略,安装完成后重启做事,你会看到一个进程
netstat 会有以下输出
仿照的http,mongodb只在本地监听.
nmap -A -p80 192.168.10.21
你能看到仿照的是apache,我们利用web漏洞扫瞄器像niko(https://cirt.net/Nikto2) nikto -h 192.168.10.21
nikto报告了5536个项目,显然蜜罐对攻击者很有吸引力,我们到MHN的web界面上看到所有的攻击报告,但是如果我们点击Payload,选择glastopf.events,我们可以看到很多记录,在“Regex term”中输入”rfi”会看到下面这些
对付这些被下载的文件,我们能够看到它们的md5值,这些文件都保存在/opt/glastopf/data
Glastopf是很好配置的,/opt/glastopf/glastopf.cfg配置文件,日志/opt/glastopf/log/glastopf.log.
官网
https://www.honeynet.org/sites/default/files/files/KYT-Glastopf-Final_v1.pdf
9.11 dionaea
dionaea将有漏洞的做事暴露出来,许可攻击者发送保存任何文件,安装大略
看到下面
暴露的做事
做事列表
tcp/5060 —> SIP Protocoltcp/5061 —> SIP Protocol over TLStcp/135 —> Remote procedure Call RPCtcp/3306 —> MySQL Databasetcp/42 —> WINS Protocoltcp/21 —> FTP Protocoltcp/1433 —> MSSQLtcp/445 —> SMB over TCPudp/5060 —> SIP Protocoludp/69 —> TFTPnmap -sS -sV -p1-65535 192.168.10.21
在扫描结果中,我们看到ftp和smb做事的指纹是"Dionaea Honeypot",这种扫描产生的记录都被记录了,扫描UDP
nmap -sU -sV -p69,5060 192.168.10.21
我们没有修正banner,会被nmap识别,如果须要修正,编辑 /usr/lib/dionaea/python/dionaea这个python文件,须要更加理解他,访问http://www.securityartwork.es/2014/06/05/avoiding-dionaea-service-identification/?lang=en,配置文件在 /etc/dionaea/dionaea.conf,日志保存在/var/dionaea/log/dionaea.log
利用nessus进行扫描,创造了53个问题,45个info,3个紧急
我们看到有MS04-007漏洞,这个漏洞能够实行任意代码,通过向主机发送ASN.1编码后的数据包,Metasploit中利用的模块是 “MS04-007 Microsoft ASN.1 Library Bitstring Heap Overflow”,利用Metasploit发起攻击,会返回“The SMB server did not reply to our request”,这种攻击会报告给mhn,攻击的细节保存在/var/dionaea/bistreams/.
0x10 总结我们已经大概理解了mhn的总体概况,怎么安装和怎么去支配蜜罐节点,还有这些蜜罐大概的一些情形。如果你清楚你想做的,支配蜜网是很有用的.可以获取攻击者更准确的信息,然后来做防御。
在支配蜜罐节点是,尽可能的根据详细情形来组合支配,这样可以是攻击者花费更多的韶光,从中获取更多的信息,争取到更多的相应韶光。
例如snort,Glastopf,Dionaea和kippo,在详细支配之前先要好好测试,避免在真实环境中涌现意想不到的问题。
个人的意见: 曾经做过类似的一个东西,不过比较这个来说就有些粗糙了,MHN中支持的开源蜜罐种类很多,基本已经涵盖了现有所有的开源蜜罐,可以根据详细的业务场景来组合。也可以根据详细的场景来做二次开拓,由于回传的数据有些大略了。如果是放置在内网中,报警功能就很有必要性,内网中得蜜罐只是为了能够延缓攻击的进度,以及及时创造入侵,从而割断入口。
原创文章,原文作者:Drops,转载自:http://www.mottoin.com/tech/124627.html