专栏首页计算机视觉与深度学习基础honeyd蜜罐配置和web监听脚本

honeyd蜜罐配置和web监听脚本

Honeyd的安装和配置

       Honeyd软件依赖于以下几个库及arpd工具:

      (1)Libevent:是一个非同步事件通知的函数库。通过使用 libevent,开发人员可以设定某些事件发生时所执行的函数,可以代替以往程序所使用的循环检查;

      (2)Libdnet:是一个提供了跨平台的网络相关 API的函数库,包括 arp 缓存,路由表查询,IP 包及物理帧的传输等;

     (3)Libpcap:是一个数据包捕获(Packet Sniffing)的函数库,大多数网络软件都以它为基础;

     (4)Arpd工具:arpd运行在与honeyd相同的系统上,是honeyd众多协作工具中最重要的一个。Arpd工作时监视局域网内的流量,并通过查看honeyd系统的ARP表判断其它系统的活动与否。当一次企图对局域网内系统的连接发生时,Arpd通过查找ARP表得知目的IP地址不存在后,就会尝试对受害者的IP地址进行ARP广播,如果honeyd得到了响应,说明目标系统确实存在,于是把目标系统的IP地址与MAC地址的对应写入honeyd的ARP表,并对这次连接尝试不动作,因为这可能是合法流量。如果Arpd没有从目标接收到Arp响应,那么它就认为目标系统并不存在,假设这是一次攻击行为,于是就尝试充当受害者的IP地址并对攻击者作出回应。由此可见,arpd将对指定的IP地址范围内未使用的IP 用honeyd主机的MAC地址做出arp应答。这样对指定的IP地址范围内未使用的IP的连接访问都被重定向至honeyd主机。因此这样的设计在局域网中特别能最大化的诱骗蠕虫病毒的攻击,转移攻击流,为下一步检测和捕获蠕虫病毒奠定了基础。

     启动honeyd前有时必须先启动arpd

     启动arpd有2种  

     A.arpd IP

     B. %arpd IP(%表示arpd的路径)因为系统本身有个arpd,有时需要指定自己安装的那个arpd的路径。

     在对以上几个库进行编译安装之前,因编译安装需要,必须确保gcc已经安装,可通过指令“gcc -v”查看gcc是否已安装,若没有安装可以输入指令:sudo apt-get install g++ gcc进行安装。

注:在装gcc之前需要装build-essential,其作用是提供软件包列表信息。

      此次试验我们是在Ubuntu环境下进行,网上下载的全部库的安装包及工具放在honeyd文件夹(存放在主文件目录下)中。

 libevent的安装:

用tar -zxvf libevent-1.4.14b-stable.tar.gz解压缩

用cd libevent-1.4.14b-stable进入目录

用./configure检测目标特征

用make进行编译

用高权限的 make install进行安装

注:最后一步一定要用管理员权限执行,即在指令前加“sudo”,不然会提示权限不够。

余下几个库的安装基本类似,出现的一些小问题都有说明:

 libdnet的安装:

tar -zxvf libdnet-1.11.tgz 

cd libdnet-1.11/

./configure

make

sudo make install

 libpcap的安装:

tar -zxvf libpcap-1.3.0.tar.gz

cd libpcap-1.3.0

./configure

*提示错误:缺少flex

apt-get install flex(安装flex)

./configure

make

*提示错误:未能找到yacc

apt-get install bison(安装yacc)

make

sudo make install

 honeyd的安装:

tar -zxvf honeyd-1.5c.tar.gz

cd honeyd-1.5c

./configure

*提示错误:需安装libedit 或libreadline

apt-get install libedit-dev(安装libedit)

./configure

*提示错误:需安装zlib库

cd 

unzip zlib-1.2.8.zip (安装zlib)

cd zlib-1.2.8

./configure

make

make install

cd honeyd-1.5c

./configure

*提示错误:无法获取libc

cp /lib/i386-linux-gnu//libc.so.6 /usr/lib/(获取libc)

./configure

*提示错误:pcap_parse未定义

cd libpcap-1.3.0(重新编译libpcap-1.3.0)

make clean (必做)

./configure

make

make install

cd -   (回到honeyd-1.5c)

make

sudo make install

工具arpd的安装:

tar arpd-0.2.tar.gz

cd arpd-0.2/

./configure

编译报错,上网查询得到下面的解决方法:

在arpd/arpd.c文件中添加 #define __FUNCTION__ "" 

make

sudo make install

虚拟出2台主机

在局域网中选择一个未被使用的IP地址,启动arpd(此处选择的是192.168.1.2和192.168.1.3,便于后面虚拟Windows主机和Linux主机),用192.168.1.150主机的MAC地址作为这两个虚拟主机的MAC地址响应。

启动honeyd时出现报错“libdnet.1: can't open sharedobjectfile”,在网上查询的都解决方法如下:

网上介绍若共享库文件安装到了“/usr/local/lib”或其他“非/lib或/usr/lib”目录下,那在执行Idconfig命令之前还要把新共享库目录加载到共享库配置文件/etc/ld.c.conf中,如下所示:

#cat /etc/ld.c.conf

include /etc/ld.c.conf/*.conf

#echo “/usr/local/lib”>>/etc/ld.c.conf

#Idconfig

但是在我们进行如上的修改后任然出现上述的问题,后来在网上查阅后又进行了如下修改:

export一个全局变量LD_LABRARY_PATH,然后运行时就会到这个目录下寻找共享库。(LD_LABRARY_PATH的作用是告诉loader在那些目录中可以找到共享库,可以设置多个搜索目录,在目录之间用逗号分隔开)

exportLD_LABRARY_PATH=/usr/local/lib:$ LD_LABRARY_PATH    

网络拓扑结构:有三台主机和一个网关,一台Windows主机用于访问虚拟服务,IP为192.168.1.115;另一台Windows主机用于提供FTP服务,IP为192.168.1.104;一台Ubuntu主机用于配置蜜罐,IP为192.168.1.150,网关为192.168.1.1。

honeyd成功安装后,利用其虚拟出一台windows主机web server,配置文件取名为:honeyd.conf,文件内容如下:

create windows

set windows personality "MicrosoftWindows NT 4.0 SP3"

set windows default tcp action reset

set windows default udp action reset

add windows tcp port 80 "shhoneyd/honeyd-1.5c/scripts/web.sh"

bind 192.168.1.2 windows

上面的配置文件创建了一个叫做windows的模板,绑定了一个honeypot的IP到这个模板上。上面的这个windows模板告诉honeyd,当一个客户端试图NMap探测honeypot的指纹时,把它自己伪装成Microsoft Windows NT 4.0 SP3的系统,用honeyd自带的web脚本虚拟web服务。

最初我们是在虚拟机上运行,可做到这一步是,同网段的主机无法访问到虚拟出来的web服务,我们在网上找了各种解决办法,检查了配置文件honeyd.conf以及虚拟服务器的脚本文件web.sh,发现并没有异样,检查了好几个小时,后来考虑可能是在虚拟机上运行的原因,就重新在ubuntu的系统下把之前的重做了一遍,然后在ubuntu终端输入如下命令,若有主机对192.168.1.2进行访问,那192.168.1.2将对其做出相应:

honeyd -d -fhoneyd.conf 192.168.1.2

这个命令-d代表在终端显示监听蜜罐的情况,-f代表采用honeyd.conf作为配置文件,192.168.1.2代表对IP地址为192.168.1.2的蜜罐进行监听。

当用192.168.1.115主机访问192.168.1.2,页面显示结果如下:

可以看到,成功执行了honeyd自带的web脚本,这是一个简单的web页面,用于测试蜜罐的搭建是否成功。

ubuntu主机响应访问时终端的显示如下:

192.168.1.115的主机成功与蜜罐192.168.1.2建立连接,并执行web脚本。

同理,测试IP地址为192.168.1.3蜜罐的过程类似。

完成实验内容的配置文件内容如下图所示:

通过上图配置文件虚拟出两台主机:一台Windows主机,IP为192.168.1.2,开放80,20,21,22端口,80端口和22端口执行虚拟服务脚本,由于FTP服务比较难模拟,所以21端口设置FTP服务代理为192.168.1.104的主机,20端口待用;一台Linux主机,IP为192.168.1.3,开放端口和虚拟服务与Windows主机相同。

把访问虚拟服务的客户端的按键记录保存在文件中

事先编写好web服务和按键记录的脚本放在web.sh文件中,后文会有对脚本代码的分析。

利用192.168.1.115访问虚拟web服务,输入用户名和密码如下所示:

 192.168.1.150控制端得到的结果如下:

由结果可知192.168.1.115主机与蜜罐已连接成功且成功执行脚本web.sh文件。

     点击登陆,控制主机通过python的os库调用OS类的system方法,在终端用tshark -d “ip dst192.168.1.2” -w catchlog将抓到的数据包保存在“catchlog”文件中,其中有包含用户名和密码的数据包:

虚拟web服务脚本如下:

这是一个shell脚本,主要是用于写入图中紫色的html代码,html代码由两部分组成,<body>至</body>创建一个web界面,包含username和password两个表单;上面为javascript部分,当点击登陆按钮的事件发生时,它会将用户username和password两个表单中的内容提交给192.168.1.2的备用开放端口20。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Leetcode 101 Symmetric Tree

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric arou...

    triplebee
  • Leetcode 235. Lowest Common Ancestor of a Binary Search Tree

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two ...

    triplebee
  • Leetcode 9 Palindrome Number

    Determine whether an integer is a palindrome. Do this without extra space. cli...

    triplebee
  • 团队合作时CSS的命名规范

    头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整...

    Javanx
  • IP地址分类及私网IP

    5类IP地址: IP地址共有32位字节,其中A~C类IP地址由类标识号、网络地址和主机地址组成,A类标识最高位为0,网络地址为1字节,主机地址为3字节, B类标...

    用户1215536
  • docker中java应用new FileOutputStream直接报Input/output error

    一个docker容器中跑着java应用,是一个定时任务,每天拉取远端文件包存到本机,命名为:decrypt-20181020

    pollyduan
  • 【蚂蚁金服】一面

    【每日一语】现在不是去想缺少什么的时候,该想一想凭现有的东西你能做什么。——海明威《老人与海》

    牛客网
  • PMN(Programmatic Mobile Native) 程序化移动原生广告之路

    Native Advertising (Native Ads),中文翻译为原生广告。2011年9月26日在纽约马奎斯万豪酒店胜利召开了OMMA(Online M...

    iCDO互联网数据官
  • ping不可以检查端口是否开放,telnet可以检查端口开放

    用户1220053
  • 面对一个需求,我们怎么开始?

    之前在作业区我出过一道题“用JS做一个抛物线下落的球”。这个题就是一个需求,内容是让你做一个抛物线下落的球。 我们把这个需求拆分一下,会发现它里面有以下几个内容...

    web前端教室

扫码关注云+社区

领取腾讯云代金券