DoS系列--分布式拒絕服務(wù)攻擊工具mstream
互聯(lián)網(wǎng) 發(fā)布時間:2008-10-08 22:12:06 作者:佚名
我要評論

DoS系列--分布式拒絕服務(wù)攻擊工具mstream ☆ 簡介 分布式拒絕服務(wù)攻擊工具mstream是基于stream2.c源碼的。目前為止有七種公認(rèn)的分 布式拒絕服務(wù)攻擊 trinoo [03] Tribe Flood Network (TFN) [04] Tribe Flood Network 2000 (tfn2k) [06] stacheldraht/stacheldrahtV
DoS系列--分布式拒絕服務(wù)攻擊工具mstream ☆ 簡介 分布式拒絕服務(wù)攻擊工具mstream是基于stream2.c源碼的。目前為止有七種公認(rèn)的分 布式拒絕服務(wù)攻擊 trinoo [03] Tribe Flood Network (TFN) [04] Tribe Flood Network 2000 (tfn2k) [06] stacheldraht/stacheldrahtV4 [05] stacheldraht v2.666 shaft [07] mstream 與其它DDoS工具相比,mstream顯得粗糙多了。逆向工程還原出的C代碼表明mstream 尚處在早期開發(fā)階段,含有大量的BUGs以及未完成的特性。然而由于stream/stream2 攻擊本身所具有的威力,即使參與的攻擊機(jī)只有幾臺,也足以對victim(以及agent) 所在網(wǎng)絡(luò)產(chǎn)生極大影響。 mstream的源代碼于2000年4月29日被人匿名發(fā)布到vuln-dev@securityfocus.com以及 BugTraq郵件列表上,因此本文做少許修正,希望緊急事件響應(yīng)小組、廠商花點(diǎn)時間 提出自己的響應(yīng)辦法。仍存留在本文中的錯誤可能正是這次匆忙而就的修正所致。 提醒讀者的是,對源代碼的修改必將導(dǎo)致與本文分析細(xì)節(jié)不相符,比如提示、口令、 命令、TCP/UDP端口號、所支持的攻擊方式、簽名、特性等等。事實(shí)上,外面廣為流 傳的代碼的通訊端口已與本文分析中的不同。 本文使用了CERT Distributed System Intruder Tools workshop于1999年11月所發(fā) 布的術(shù)語標(biāo)準(zhǔn)。強(qiáng)烈建議先閱讀如下鏈接以做背景知識 http://www.cert.org/reports/dsit_workshop.pdf http://staff.washington.edu/dittrich/misc/ddos/ 2000年4月下旬在某大學(xué)一臺被入侵的Linux主機(jī)上發(fā)現(xiàn)了mstream agent,該機(jī)正以 偽造的源IP對超過一打(12個)的目標(biāo)主機(jī)進(jìn)行flooding攻擊。 這個子網(wǎng)的出口上應(yīng)用了RFC 2267所定義的外出過濾規(guī)則(參考資源[13]),在32bits 范圍內(nèi)偽造的源IP中,只有一小部分(匹配子網(wǎng)掩碼的)能離開子網(wǎng)發(fā)送出去。然而, 此時出口路由器(內(nèi)側(cè)有18個子網(wǎng))停止響應(yīng)。這意味著做外出過濾規(guī)則的路由設(shè)備本 身將遭受攻擊,盡管原來所定攻擊目標(biāo)只收到比攻擊者預(yù)期要少得多的攻擊報(bào)文。教 訓(xùn)是,對于DDoS,簡單的包過濾機(jī)制并不是一個快速有效的解決方案。我們已經(jīng)提醒 了路由廠商,希望他們能找出問題原因并修正之。 應(yīng)用外出過濾規(guī)則后被拒絕外出的攻擊報(bào)文無法到達(dá)下一跳路由器,下一跳路由器感 受不到攻擊。這意味著基于IDS的邊界路由器、DMZ上的IDS或者ISP方的監(jiān)視設(shè)備無法 確認(rèn)攻擊發(fā)生。除非你正在監(jiān)視路由器本身,而用戶抱怨并暗示攻擊來自你的子網(wǎng)。 這也使Sniffer抓包分析更加困難,只能在應(yīng)用外出過濾規(guī)則的路由器內(nèi)側(cè)才能抓到 所有包。 2000年2月上旬一家電子商務(wù)網(wǎng)站遭受攻擊,至今為止他們還不知道對方使用何種攻 擊工具,只知道他們的路由器崩潰了,每次都依賴于他們的上級路由器阻斷攻擊、恢 復(fù)通訊。法律部門在缺乏證據(jù)的情況下無法介入,他們不能認(rèn)定這是DoS、DDoS攻擊 而非路由器、瀏覽器自身技術(shù)故障。針對Yahoo!的攻擊描述在Packetstormsecurity 找到(參考資源[11]),并沒有更多其它可用信息。 1999年trinoo、TFN和stacheldraht伴隨著大量自動入侵行為,mstream則處在代碼開 發(fā)的早期階段,通常是手工入侵、安裝(包括handler和agent),并用一個略微改動后 的Linux rootkit version 4 [10]保護(hù)自己。 附錄D介紹了一次針對agent的入侵和蹤跡隱藏。附錄E介紹了一次針對handler的入侵 和蹤跡隱藏。 ☆ mstream network: client(s)-->handler(s)-->agent(s)-->victim(s) 與trinoo和shaft一樣,mstream network由一個或多個handlers(master.c)以及大量 的agents(server.c)組成。Attacker到handler之間的通訊是未加密的TCP傳輸, handler到agent之間的通訊是未加密的UDP傳輸。整個結(jié)構(gòu)看上去像這個樣子 -------------------------------------------------------------------------- ---------- ---------- | attacker | | attacker | ---------- ---------- | | . . . -- ------ --------------- ------ ---------------- -- . . . | | | | | | ----------- ----------- ----------- | handler | | handler | | handler | ----------- ----------- ----------- | | | | | | . . . --- ------ ----- ------------ --- -------- ------------ - -- . . . | | | | | | | | | | ------- ------- ------- ------- ------- | agent | | agent | | agent | | agent | | agent | ------- ------- ------- ------- ------- 圖: mstream network -------------------------------------------------------------------------- ☆ 通訊 Attacker -> Handler(s) : 6723/tcp (in published source) 15104/tcp ("in the wild") 12754/tcp (in recovered source) Agent -> Handler(s) : 9325/udp (in published source) 6838/udp ("in the wild") Handler -> Agent(s) : 7983/udp (in published source) 10498/udp ("in the wild") Attacker到Handler的遠(yuǎn)程控制是通過TCP連接完成的,端口號不定(很容易產(chǎn)生變體)。 Handler所等待的命令應(yīng)該完整地位于單個TCP報(bào)文的數(shù)據(jù)區(qū)(PDU)中,而不是斷續(xù)的 字節(jié)流。這意味著不能使用"telnet"控制Handler,netcat [19]可以勝任。Security Focus [20]中的源代碼并未包含這樣的客戶端工具。 Attacker到Handler的傳輸未做加密處理,盡管stacheldraht表明增加Blowfish block cipher并不困難。命令行靠空格分隔參數(shù)。 與trinoo類似,Handler(s)與Agent(s)之間的通訊通過UDP報(bào)文完成。Agents命令行 靠斜杠(‘/‘)分隔參數(shù),多項(xiàng)參數(shù)自身靠冒號(‘:‘)分隔。 我們所檢查的代碼中最多允許3個Attackers連接到一個Handler,或許這是一個保護(hù) 性措施,也可能是個多余的訪問限制。 連接建立后,必須提交正確的口令,缺省值如下 Attacker -> Handler(s) : "sex" (in published source [20]) "N7%diApf!" (in recovered source) 如果口令不正確,所有目前已建立連接的用戶被提醒有人正試圖訪問該Handler,然 后關(guān)閉這個未通過驗(yàn)證的連接。如果口令正確,所有目前已建立連接的用戶被提醒產(chǎn) 生新的會話連接,通過驗(yàn)證的用戶得到一個"> "提示符。 ☆ Handler命令 Handler命令行至多由3個空格分隔的參數(shù)組成(argv[0] - argv[2])。 如果攻擊者建立連接后420秒內(nèi)未輸入一條命令,連接終止。 Handler命令集如下 help 顯示如下信息 Available commands: stream stream attack !(進(jìn)行stream攻擊) servers Prints all known servers.(顯示所有已知servers/agents) ping ping all servers. who tells you the ips of the people logged in mstream lets you stream more than one ip at a time servers 顯示當(dāng)前所有已知Agents who 顯示當(dāng)前已建立連接的用戶 ping 確認(rèn)Agents的活動狀態(tài)。對所有已知Agents發(fā)送"ping",每收到一個"pong"回應(yīng) 就報(bào)告用戶。 stream <hostname> <seconds> 針對單個主機(jī)攻擊,seconds指定攻擊持續(xù)時間。Handler將主機(jī)名解析成IP地址 并發(fā)送命令"mstream/arg1:arg1/arg2"到所有Agents,這里arg1是victim目標(biāo)IP 地址,arg2是攻擊持續(xù)時間。 mstream <seconds> 針對多臺主機(jī)攻擊,seconds指定攻擊持續(xù)時間。Handler發(fā)送命令 "mstream/arg1/arg2"到所有Agents,這里arg1是冒號分隔的victim目標(biāo)IP地址 列表,arg2是攻擊持續(xù)時間。 quit 終止Attacker到Handler的連接 ☆ Agent命令 Handler到Agent的命令位于UDP報(bào)文的數(shù)據(jù)區(qū)(PDU)中,未做加密處理(盡管這很容易 做到)。 目前僅有三條Agent命令。Agent命令行是一個靠斜杠("/")分隔參數(shù)的簡單字符串。 ping 對發(fā)送該命令的IP響應(yīng)以"pong"。 stream/IP/seconds 開始對指定IP進(jìn)行攻擊,seconds指定攻擊持續(xù)時間。 mstream/IP1[:IP2[:IPN]]/seconds 開始對指定IP列表進(jìn)行攻擊,seconds指定攻擊持續(xù)時間。 盡管Agent可以接受stream和mstream兩種命令,但實(shí)際只有mstream命令用于Handler 與Agent之間。"stream 192.168.0.100 10"將被轉(zhuǎn)換成 "mstream/192.168.0.100:192.168.0.100/10",然后發(fā)送到Agent。不清楚為何要這 樣處理,或許這只是表明mstream的開發(fā)過程快速而凌亂。 ☆ 口令保護(hù) Handler受口令保護(hù),以防止其被任意接管。口令未做加密處理,僅僅是明文字符串 之間的比較??梢岳肧niffer獲取口令明文。 這里應(yīng)該再次提醒的是,mstream有一個特性是其它DDoS工具所不具有的,它會提醒 所有已建立連接的用戶有新的連接試圖建立,無論成功與否。 令人驚奇的是Handler與Agent之間無口令保護(hù)。 ☆ 指紋 前面提到了,Handler(s)與Agent(s)之間的命令串是明文字符串,在通訊報(bào)文中可見。 對Agent使用strings命令可以看到這樣一些明文字符串(為了節(jié)省顯示空間做了處理) -------------------------------------------------------------------------- ELF mstream /lib/ld-linux.so.2 ping GNU pong __gmon_start__ fork libc.so.6 init.c random . . . getpid server.c perror strchr@@GLIBC_2.0 getuid packet malloc getpid@@GLIBC_2.0 recvfrom _DYNAMIC socket _etext bind __register_frame_info@@GLIBC_2.0 inet_addr recvfrom@@GLIBC_2.0 __deregister_frame_info _fp_hw setsockopt perror@@GLIBC_2.0 rand fork@@GLIBC_2.0 strncmp sock strncpy cksum sendto random@@GLIBC_2.0 strtok _init fork malloc@@GLIBC_2.0 memset getppid@@GLIBC_2.0 srand sendto@@GLIBC_2.0 getppid __deregister_frame_info@@GLIBC_2.0 time setsockopt@@GLIBC_2.0 htons time@@GLIBC_2.0 exit _start atoi forkbg _IO_stdin_used strlen@@GLIBC_2.0 __libc_start_main stream strlen strncmp@@GLIBC_2.0 strchr inet_addr@@GLIBC_2.0 __register_frame_info __bss_start free main GLIBC_2.0 __libc_start_main@@GLIBC_2.0 PTRh data_start QVh0 bind@@GLIBC_2.0 Ph% getuid@@GLIBC_2.0 PhG _fini WVS s_in [^_ srand@@GLIBC_2.0 WVS nlstr j(j exit@@GLIBC_2.0 j h atoi@@GLIBC_2.0 j(h _edata j h in_cksum j(h _GLOBAL_OFFSET_TABLE_ [^_ free@@GLIBC_2.0 131.247.208.191 _end 129.79.20.202 htons@@GLIBC_2.0 socket send2master bind memset@@GLIBC_2.0 setsockopt strncpy@@GLIBC_2.0 newserver _IO_stdin_used stream strtok@@GLIBC_2.0 __data_start __gmon_start__ socket@@GLIBC_2.0 rand@@GLIBC_2.0 -------------------------------------------------------------------------- 對Handler使用strings命令可以看到這樣一些明文字符串(做了處理) -------------------------------------------------------------------------- % strings -n 3 master socket stream bind stream attack ! listen servers setsockopt Prints all known servers. fcntl ping You‘re too idle ! ping all servers. Connection from %s who newserver tells you the ips of the people log New server on %s. mstream pong lets you stream more than one ip at Got pong number %d from %s who %s has disconnected (not auth‘d): %s Currently Online: Invalid password from %s. Socket number %d Password accepted for connection fr [%s] Lost connection to %s: %s ping stream Pinging all servers. Usage: stream <hostname> <seconds> mstream Unable to resolve %s. Usage: mstream <s stream/%s/%s MStreaming %s for %s seconds. Streaming %s for %s seconds. mstream/%s/%s quit fork %s has disconnected. Forked into background, pid %d servers Caught SIGHUP, ignoring. Server file doesn‘t exist, creating Caught SIGINT, ignoring. The following ips are known servers Segmentation Violation, Exiting cle help Caught unknown signal, This should commands Available commands: -------------------------------------------------------------------------- 用lsof命令檢查Agent,在這臺主機(jī)上它名為"rpc.wall",Handler也用同樣的名字 -------------------------------------------------------------------------- COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME rpc.wall 588 root cwd DIR 3,2 1024 2 / rpc.wall 588 root rtd DIR 3,2 1024 2 / rpc.wall 588 root txt REG 3,3 17016 15765 /usr/bin/rpc.wall rpc.wall 588 root mem REG 3,2 342206 30771 /lib/ld-2.1.1.so rpc.wall 588 root mem REG 3,2 4016683 30789 /lib/libc-2.1.1.so rpc.wall 588 root 0u CHR 5,1 4952 /dev/console rpc.wall 588 root 1w FIFO 0,0 646 pipe rpc.wall 588 root 2w FIFO 0,0 647 pipe rpc.wall 588 root 3u IPv4 656 UDP *:10498 rpc.wall 588 root 4u IPv4 657 UDP *:1044 rpc.wall 588 root 5u IPv4 658 UDP *:1045 rpc.wall 588 root 6u raw 30219 00000000:00FF->00000000:0000 st=07 rpc.wall 588 root 7r FIFO 0,0 648 pipe rpc.wall 588 root 8u raw 30241 00000000:00FF->00000000:0000 st=07 rpc.wall 588 root 9u CHR 5,1 4952 /dev/console rpc.wall 588 root 10u IPv4 30244 UDP *:1051 rpc.wall 588 root 11u raw 30245 00000000:00FF->00000000:0000 st=07 rpc.wall 588 root 21w FIFO 0,0 648 pipe -------------------------------------------------------------------------- server.c和master.c都有BUG,結(jié)果Agent多出一些raw socket、UDP socket(在這個 例子中各多出兩個),而Handler會多出一些打開的文件句柄以及UDP socket(Andrew Korty曾經(jīng)檢查到數(shù)百個)。毫無疑問,mstream處在早期開發(fā)階段,所以這些簽名并 不可靠。 當(dāng)一個Agent第一次啟動時,它向編譯時固化進(jìn)二進(jìn)制文件的缺省Handlers列表發(fā)送 "newserver"命令,用tcpdump可以看到如下內(nèi)容 -------------------------------------------------------------------------- 00:04:38.530000 192.168.0.20.1081 > 192.168.0.100.6838: udp 9 0x0000 4500 0025 ef75 0000 4011 098a c0a8 0014 E..%.u..@....... 0x0010 c0a8 0064 0439 1ab6 0011 2b63 6e65 7773 ...d.9.... cnews 0x0020 6572 7665 7200 0000 0000 0000 0000 erver......... -------------------------------------------------------------------------- 如果發(fā)現(xiàn)rootkit存在(Handler和Agent上都會使用),你不能相信標(biāo)準(zhǔn)操作系統(tǒng)命令 的輸出,比如進(jìn)程、網(wǎng)絡(luò)連接等等。所有的系統(tǒng)管理員都應(yīng)該花點(diǎn)時間看看參考資源 [10]以了解rootkit。 前面提到了,如果一個Agent在10498/UDP上收到一個UDP報(bào)文,其數(shù)據(jù)區(qū)包含字符串 "ping",如果這個Agent此時沒有處在攻擊狀態(tài)中,則響應(yīng)一個UDP報(bào)文,目標(biāo)端口 6838/UDP,數(shù)據(jù)區(qū)包含字符串"pong"。下面是tcpdump的輸出,結(jié)尾的0是tcpdump自 己增加的,實(shí)際負(fù)載只有4個字節(jié)。 -------------------------------------------------------------------------- 00:05:16.457239 192.168.0.100.65364 > 192.168.0.20.10498: udp 5 0x0000 4500 0021 f412 0000 4011 04f1 c0a8 0064 E..!....@......d 0x0010 c0a8 0014 ff54 2902 000d 6ce3 7069 6e67 .....T)...l.ping 0x0020 0a . 00:05:16.458214 192.168.0.20.1083 > 192.168.0.100.6838: udp 4 0x0000 4500 0020 ef8c 0000 4011 0978 c0a8 0014 E.......@..x.... 0x0010 c0a8 0064 043b 1ab6 000c 8045 706f 6e67 ...d.;.....Epong 0x0020 0000 0000 0000 0000 0000 0000 0000 .............. -------------------------------------------------------------------------- 可以用ngrep [14]、snort [18](附錄B介紹了snort規(guī)則)做簽名匹配,或者用rid [15](附錄C有一個RID模板)搜索空閑(未做攻擊)Agents。 # ngrep "p[oi]ng" udp port 6838 or udp port 10498 如果攻擊者修改了源代碼,這條ngrep命令所用端口也要修改。 攻擊報(bào)文固定在40字節(jié)大小,或許是規(guī)避某些IDS的大包檢測規(guī)則。 stream2.c對victim做TCP ACK Flooding,源IP隨機(jī)化(用random()產(chǎn)生),源端口和 TCP序列號順序遞增。參看如下源代碼 -------------------------------------------------------------------------- . . . for ( i = 0; ; i ) { cksum.pseudo.saddr = packet.ip.ip_src.s_addr = random(); packet.ip.ip_id; packet.tcp.th_sport; packet.tcp.th_seq; if ( !dstport ) { s_in.sin_port = packet.tcp.th_dport = rand(); } . . . -------------------------------------------------------------------------- 由于源IP隨機(jī)化,偽造得到的點(diǎn)分十進(jìn)制源IP可能出現(xiàn)某些字節(jié)為0的情況。 用tcpdump抓取攻擊報(bào)文 -------------------------------------------------------------------------- 01:39:24.701083 192.168.0.2.65527 > 192.168.0.20.10498: [bad udp cksum 3100!] udp 24 (ttl 64, id 886) 0x0000 4500 0034 0376 0000 4011 f5dc c0a8 0002 E..4.v..@....... 0x0010 c0a8 0014 fff7 2902 0020 556c 7374 7265 ......)...Ulstre 0x0020 616d 2f31 3932 2e31 3638 2e30 2e31 3030 am/192.168.0.100 0x0030 2f31 300a /10. 01:40:10.132724 192.168.0.2.65526 > 192.168.0.20.10498: [bad udp cksum 3100!] udp 24 (ttl 64, id 930) 0x0000 4500 0034 03a2 0000 4011 f5b0 c0a8 0002 E..4....@....... 0x0010 c0a8 0014 fff6 2902 0020 556d 7374 7265 ......)...Umstre 0x0020 616d 2f31 3932 2e31 3638 2e30 2e31 3030 am/192.168.0.100 0x0030 2f31 300a /10. 01:41:23.674796 192.168.0.2.65525 > 192.168.0.20.10498: [bad udp cksum 4a00!] udp 49 (ttl 64, id 1031) 0x0000 4500 004d 0407 0000 4011 f532 c0a8 0002 E..M....@..2.... 0x0010 c0a8 0014 fff5 2902 0039 a9b4 6d73 7472 ......)..9..mstr 0x0020 6561 6d2f 3139 322e 3136 382e 302e 313a eam/192.168.0.1: 0x0030 3139 322e 3136 382e 302e 3130 303a 3139 192.168.0.100:19 0x0040 322e 3136 382e 302e 322f 3130 0a 2.168.0.2/10. 01:41:23.675771 arp who-has 192.168.0.1 tell 192.168.0.20 0x0000 0001 0800 0604 0001 0010 5a99 6544 c0a8 ..........Z.eD.. 0x0010 0014 0000 0000 0000 c0a8 0001 0000 0000 ................ 0x0020 0000 0000 0000 0000 0000 0000 0000 .............. 01:41:23.675772 arp who-has 192.168.0.100 tell 192.168.0.20 0x0000 0001 0800 0604 0001 0010 5a99 6544 c0a8 ..........Z.eD.. 0x0010 0014 0000 0000 0000 c0a8 0064 0000 0000 ...........d.... 0x0020 0000 0000 0000 0000 0000 0000 0000 .............. 01:41:23.675773 77.172.43.85.38444 > 192.168.0.2.26296: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 50237) 0x0000 4508 0028 c43d 0000 ff06 bdde 4dac 2b55 E..(.=......M. U 0x0010 c0a8 0002 962c 66b8 ea97 d237 0000 0000 .....,f....7.... 0x0020 5010 4000 7c74 0000 0000 0000 0000 P.@.|t........ 01:41:23.675774 88.148.222.45.39212 > 192.168.0.2.10342: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 51005) 0x0000 4508 0028 c73d 0000 ff06 fd1d 5894 de2d E..(.=......X..- 0x0010 c0a8 0002 992c 2866 ed97 d237 0000 0000 .....,(f...7.... 0x0020 5010 4000 f705 0000 0000 0000 0000 P.@........... 01:41:23.675775 0.18.219.113.39980 > 192.168.0.2.41622: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 51773) 0x0000 4508 0028 ca3d 0000 ff06 555c 0012 db71 E..(.=....U\...q 0x0010 c0a8 0002 9c2c a296 f097 d237 0000 0000 .....,.....7.... 0x0020 5010 4000 d213 0000 0000 0000 0000 P.@........... 01:41:23.675776 121.161.140.109.40748 > 192.168.0.2.16749: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 52541) 0x0000 4508 0028 cd3d 0000 ff06 27d1 79a1 8c6d E..(.=....‘.y..m 0x0010 c0a8 0002 9f2c 416d f397 d237 0000 0000 .....,Am...7.... 0x0020 5010 4000 02b2 0000 0000 0000 0000 P.@........... 01:41:23.675777 79.238.213.72.41516 > 192.168.0.2.46276: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 53309) 0x0000 4508 0028 d03d 0000 ff06 05a9 4fee d548 E..(.=......O..H 0x0010 c0a8 0002 a22c b4c4 f697 d237 0000 0000 .....,.....7.... 0x0020 5010 4000 6a32 0000 0000 0000 0000 P.@.j2........ 01:41:23.675778 104.24.203.64.42284 > 192.168.0.2.61623: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 54077) 0x0000 4508 0028 d33d 0000 ff06 f486 6818 cb40 E..(.=......h..@ 0x0010 c0a8 0002 a52c f0b7 f997 d237 0000 0000 .....,.....7.... 0x0020 5010 4000 1a1d 0000 0000 0000 0000 P.@........... 01:41:23.675779 37.60.73.50.43052 > 192.168.0.2.51311: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 54845) 0x0000 4508 0028 d63d 0000 ff06 b671 253c 4932 E..(.=.....q%<I2 0x0010 c0a8 0002 a82c c86f fc97 d237 0000 0000 .....,.o...7.... 0x0020 5010 4000 0150 0000 0000 0000 0000 P.@..P........ 01:41:23.675780 142.14.73.40.43820 > 192.168.0.2.8979: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 55613) 0x0000 4508 0028 d93d 0000 ff06 4aa9 8e0e 4928 E..(.=....J...I( 0x0010 c0a8 0002 ab2c 2313 ff97 d237 0000 0000 .....,#....7.... 0x0020 5010 4000 37e4 0000 0000 0000 0000 P.@.7......... 01:41:23.676748 144.19.212.69.44588 > 192.168.0.2.51668: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 56381) 0x0000 4508 0028 dc3d 0000 ff06 ba86 9013 d445 E..(.=.........E 0x0010 c0a8 0002 ae2c c9d4 0298 d237 0000 0000 .....,.....7.... 0x0020 5010 4000 fdff 0000 0000 0000 0000 P.@........... 01:41:23.676749 155.176.45.2.45356 > 192.168.0.2.32793: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 57149) 0x0000 4508 0028 df3d 0000 ff06 532d 9bb0 2d02 E..(.=....S-..-. 0x0010 c0a8 0002 b12c 8019 0598 d237 0000 0000 .....,.....7.... 0x0020 5010 4000 dd61 0000 0000 0000 0000 P.@..a........ 01:41:23.676750 10.98.211.13.46124 > 192.168.0.2.1995: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 57917) 0x0000 4508 0028 e23d 0000 ff06 3b70 0a62 d30d E..(.=....;p.b.. 0x0010 c0a8 0002 b42c 07cb 0898 d237 0000 0000 .....,.....7.... 0x0020 5010 4000 3af3 0000 0000 0000 0000 P.@.:......... 01:41:23.676751 214.235.187.89.46892 > 192.168.0.2.14172: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 58685) 0x0000 4508 0028 e53d 0000 ff06 839a d6eb bb59 E..(.=.........Y 0x0010 c0a8 0002 b72c 375c 0b98 d237 0000 0000 .....,7\...7.... 0x0020 5010 4000 508c 0000 0000 0000 0000 P.@.P......... 01:41:23.676752 90.193.127.8.47660 > 192.168.0.2.64812: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 59453) 0x0000 4508 0028 e83d 0000 ff06 3916 5ac1 7f08 E..(.=....9.Z... 0x0010 c0a8 0002 ba2c fd2c 0e98 d237 0000 0000 .....,.,...7.... 0x0020 5010 4000 3d37 0000 0000 0000 0000 P.@.=7........ 01:41:23.676753 160.176.42.60.48428 > 192.168.0.2.17432: . [tcp sum ok] ack 0 win 16384 [tos 0x8] (ttl 255, id 60221) 0x0000 4508 0028 eb3d 0000 ff06 44f3 a0b0 2a3c E..(.=....D...*< 0x0010 c0a8 0002 bd2c 4418 1198 d237 0000 0000 .....,D....7.... 0x0020 5010 4000 ff28 0000 0000 0000 0000 P.@..(........ -------------------------------------------------------------------------- 對Cisco Net Flows產(chǎn)生的日志使用如下命令(過濾點(diǎn)分十進(jìn)制中含有0的IP地址)可以 發(fā)覺攻擊的存在 -------------------------------------------------------------------------- % grep "[ \.]0[ \.(]" ddos-000415 Apr 15 04:12:08 tcp 82.0.151.5(29497) -> 192.168.10.5(27072), 1 packet Apr 15 04:12:18 tcp 207.0.149.32(21893) -> 192.168.10.5(3913), 1 packet Apr 15 04:12:33 tcp 0.147.151.82(10473) -> 10.4.152.237(2810), 1 packet Apr 15 04:13:39 tcp 60.0.33.36(41079) -> 10.4.152.237(31754), 1 packet Apr 15 04:14:03 tcp 103.140.148.0(4247) -> 10.4.152.237(29689), 1 packet Apr 15 04:14:15 tcp 214.1.99.0(46714) -> 10.4.152.237(22524), 1 packet Apr 15 04:15:11 tcp 10.148.60.0(12276) -> 192.168.10.5(31122), 1 packet Apr 15 04:15:20 tcp 0.112.67.108(4550) -> 192.168.10.5(63787), 1 packet Apr 15 04:15:33 tcp 13.0.16.2(39092) -> 10.4.152.237(57998), 1 packet . . . Apr 15 06:45:24 tcp 18.167.171.0(54104) -> 10.200.5.8(32779), 1 packet Apr 15 06:45:52 tcp 0.23.15.38(45621) -> 10.200.5.8(20780), 1 packet Apr 15 06:46:14 tcp 0.12.109.77(38670) -> 10.200.5.8(47776), 1 packet Apr 15 07:19:12 tcp 199.120.0.72(64912) -> 10.4.152.237(45151), 1 packet Apr 15 07:27:37 tcp 0.28.232.21(52533) -> 10.4.152.237(338), 1 packet Apr 15 07:28:13 tcp 99.61.233.0(20951) -> 10.4.152.237(58427), 1 packet Apr 15 07:31:23 tcp 195.0.3.111(17193) -> 10.4.152.237(14601), 1 packet Apr 15 07:32:19 tcp 61.108.245.0(24309) -> 10.4.152.237(32809), 1 packet -------------------------------------------------------------------------- 應(yīng)該提醒的是某些偽造得到的源IP是廣播地址、組播地址、子網(wǎng)地址,這將產(chǎn)生一些 其它問題(參考資源[12])。 分析stream2.c的源代碼,IP、TCP層的很多頭部信息被隨機(jī)化了,但還是有一些靜態(tài) 值 -------------------------------------------------------------------------- packet.ip.ip_id = rand(); . . . packet.tcp.th_win = htons(16384); . . . packet.tcp.th_seq = random(); . . . packet.tcp.th_sport = rand(); packet.tcp.th_dport = rand(); . . . while ( time( 0 ) <= endtime ) { if ( floodtype != 0 ) { i = 0; /* * until list exhausted */ while ( arg4[i] != NULL ) { /* * valid ip */ if ( strchr( arg4[i], ‘.‘ ) != NULL ) { packet.ip.ip_dst.s_addr = inet_addr(arg4[i]); cksum.pseudo.daddr = inet_addr(arg4[i]); s_sin.sin_addr.s_addr = inet_addr(arg4[i]); cksum.pseudo.saddr = packet.ip.ip_src.s_addr = random(); packet.ip.ip_id ; packet.tcp.th_sport ; packet.tcp.th_seq ; s_in.sin_port = packet.tcp.th_dport = rand(); . . . } } } } -------------------------------------------------------------------------- ☆ 防御 我們沒有時間完成這部分內(nèi)容,任何針對stream/stream2 [12]或者其它DDoS工具 [08]的防御討論都可一試。最后,看在上帝的份上,網(wǎng)管、系管們做好自身的安全防 衛(wèi)工作吧,我暈倒。 ☆ 弱點(diǎn) 由于Attacker、Handler、Agent之間的通訊未加密,很容易被Sniffer、Hijack等等。 Agent(s)不對命令來源做任何驗(yàn)證,我們可以利用"ping/pong"特性找出那些當(dāng)前未 做攻擊的Agent(s)。 "pong"是Agent到Handler的唯一響應(yīng),"newserver"是Agent第一次啟動時發(fā)給 Handler的。附錄D介紹了Agent的安裝,每次系統(tǒng)重啟都會啟動Agent。這意味著在系 統(tǒng)重啟時可以抓到"newserver"包,我們不推薦這樣去鑒別Agent的存在,至少不該是 首選動作。參看附錄D、附錄E。 Agent接收到一個格式錯誤的命令串(比如"stream foo bar")時,將發(fā)生 segmentation fault,導(dǎo)致Agent(s)不可用,但是很可能在系統(tǒng)重啟時恢復(fù)工作。 向Agent發(fā)送太多命令導(dǎo)致打開的文件句柄過多而最終停止響應(yīng)。 Agent進(jìn)程是單線程的,意味著在攻擊中它無法處理來自Handler的命令,一旦攻擊開 始,Agent將失去控制。 Agent工作在多種flood攻擊模式下時,攻擊列表中的所有主機(jī)遭受同樣時間長度的攻 擊以及同樣類型的攻擊(比如ICMP主機(jī)不可達(dá)、TCP RST)。 ☆ 可能的修正 1) Handler上針對到自己的連接請求做源端口過濾 2) 在Handler與Agent之間增加驗(yàn)證機(jī)制 3) 報(bào)文大小可選 4) 允許指定flood packets的TCP標(biāo)志(ACK、RST、NUL、random、whatever) 5) Attacker與Handler之間的通訊加密 6) 增加內(nèi)置命令 ☆ 致謝 Halloween (trinoo) Thanksgiving (TFN) Christmas (stacheldraht) New Years (building/testing scanning tools for all three) Sven Dietrich & Neil Long (analyzing "shaft" [07]) Andrew Korty & investigators at Indiana University (forensic analysis and data gathering) 感謝那位匿名發(fā)布mstream源代碼(Security Focus [20])的朋友承認(rèn)我的早期工作。 唯一遺憾的是沒有直接將這份代碼發(fā)給我,而是直接公布了,這導(dǎo)致我們被迫更改周 末計(jì)劃趕制這份分析,本來我計(jì)劃進(jìn)行一次星期日遠(yuǎn)游。無論你是誰,你都欠我點(diǎn)。 ☆ 附錄A - 參考資源 [00] TCP/IP Illustrated, Vol. I, II, and III. W. Richard Stevens and Gary R. Wright., Addison-Wesley [01] CERT Distributed System Intruder Tools Workshop report http://www.cert.org/reports/dsit_workshop.pdf [02] CERT Advisory CA-99-17 Denial-of-Service Tools http://www.cert.org/advisories/CA-99-17-denial-of-service-tools.html [03] The DoS Project‘s "trinoo" distributed denial of service attack tool, David Dittrich http://staff.washington.edu/dittrich/misc/trinoo.analysis [04] The "Tribe Flood Network" distributed denial of service attack tool, David Dittrich http://staff.washington.edu/dittrich/misc/tfn.analysis [05] The "stacheldraht" distributed denial of service attack tool, David Dittrich http://staff.washington.edu/dittrich/misc/stacheldraht.analysis [06] TFN2K - An Analysis, Jason Barlow and Woody Thrower, Axent Security Team http://packetstorm.securify.com/distributed/TFN2k_Analysis-1.3.txt [07] An analysis of the ``Shaft‘‘ distributed denial of service tool, Sven Dietrich, Neil Long, and David Dittrich http://netsec.gsfc.nasa.gov/~spock/shaft_analysis.txt [08] Distributed Denial of Service (DDoS) Attack Tools, David Dittrich http://staff.washington.edu/dittrich/misc/ddos/ [09] Distributed denial of service attack tools at Packet Storm Security http://packetstorm.securify.com/distributed/ [10] "Root Kits" and hiding files/directories/processes after a break-in, David Dittrich http://staff.washington.edu/dittrich/misc/faqs/rootkits.faq [11] Technical details of the attack on Yahoo! http://packetstorm.securify.com/distributed/yahoo.txt [12] BUGTRAQ threads on the stream.c DoS attack and its fallout http://staff.washington.edu/dittrich/misc/ddos/stream.txt [13] RFC 2267 -- Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing, Paul Fergussen and Daniel Senie ftp://ftp.isi.edu/in-notes/rfc2267.txt [14] ngrep http://www.packetfactory.net/ngrep/ [15] rid http://theorygroup.com/Software/RID [16] Dan Farmer & Wietse Venema‘s class on computer forensic analysis http://www.fish.com/security/forensics.html [17] tcpdump ftp://ftp.ee.lbl.gov/tcpdump.tar.Z [18] snort http://www.clark.net/~roesch/security.html [19] netcat ("nc"), Hobbit http://packetstorm.securify.com/UNIX/netcat/nc110.tgz [20] Source code for mstream http://securityfocus.com/templates/archive.pike?list=82&date=2000-04-29&threa d=200004291748.TAA13203@lobeda.jena.thur.de ☆ 附錄B - 檢測mstream的snort規(guī)則 alert UDP any any -> any 6838 (msg: "IDS100/ddos-mstream-agent-to-handler"; content: "newserver"; ) alert UDP any any -> any 10498 (msg: "IDS101/ddos-mstream-handler-to-agent"; content: "stream/"; ) alert UDP any any -> any 10498 (msg: "IDS102/ddos-mstream-handler-ping-to-agent" ; content: "ping";) alert UDP any any -> any 10498 (msg: "IDS103/ddos-mstream-agent-pong-to-handler" ; content: "pong";) alert TCP any any -> any 12754 (msg: "IDS109/ddos-mstream-client-to-handler"; flags: S;) alert TCP any 12754 -> any any (msg: "IDS110/ddos-mstream-handler-to-client"; content: ">"; flags: AP;) alert TCP any any -> any 15104 (msg: "IDS111/ddos-mstream-client-to-handler"; flags: S;) alert TCP any 15104 -> any any (msg: "IDS112/ddos-mstream-handler-to-client"; content: ">"; flags: AP;) ☆ 附錄C - 檢測mstream的RID模板 start mstream-wild send udp dport=10498 data="ping" recv udp dport=6838 data="pong" nmatch=2 end mstream-wild start mstream-published send udp dport=7983 data="ping" recv udp dport=9325 data="pong" nmatch=2 end mstream-published scz注: 這里<ID>錯誤地使用了減號‘-‘,證明這個模板是未經(jīng)驗(yàn)證的 ☆ 附錄D - 最初的Agent系統(tǒng)的入侵和蹤跡隱藏 通過檢查Agent系統(tǒng)、詢問管理員,確認(rèn)發(fā)生過兩次獨(dú)立的入侵。第一個在2000年3月 31之前,/etc/passwd中留下了"inertia"帳號,管理員于4月1號刪除了該帳號。上載 安裝rootkit (lrk4)和DDoS Agent ("rpc.wall")是在4月13號16:02(這里提及的所有 時間,除非特別聲明,均為美國/太平洋時間或GMT-0700時間),留有ADM named攻擊 的痕跡,4月15號05:55還登錄了一次。系統(tǒng)日志被刪除、擦除過,所以無法根據(jù)日志 判斷發(fā)生過什么。 Dan Farmer和Wietse Venema提供過一個"Coroner‘s Toolkit [16]",利用其中的 "mactime"還是可以看到入侵者的某些行為。下列輸出中的年份100顯然是Y2K問題。 -------------------------------------------------------------------------- Apr 13 100 16:02:42 12060 .aa -rwxr-xr-x root/www root /bin/chown 12660 m.m -r-sr-xr-x root/www bin /bin/login Apr 13 100 16:02:43 2048 mcmc drwxr-xr-x root/www root /bin 12660 cc -r-sr-xr-x root/www bin /bin/login 168748 .a. -rwxr-xr-x root/www root /usr/bin/as 64796 .a. -rwxr-xr-x root/www root /usr/bin/egcs 64796 .a. -rwxr-xr-x root/www root /usr/bin/gcc 64796 .a. -rwxr-xr-x root/www root /usr/bin/i386-redhat-linux-gcc 168496 .a. -rwxr-xr-x root/www root /usr/bin/ld 12656 m.c -rws--x--x root/www root /usr/bin/old 12656 m.c -r-xr-xr-x root/www bin /usr/bin/xstat 2315 .a. -rw-r--r-- root/www root /usr/include/_G_config.h 1313 .a. -rw-r--r-- root/www root /usr/include/alloca.h 4090 .a. -rw-r--r-- root/www root /usr/include/arpa/inet.h 3451 .a. -rw-r--r-- root/www root /usr/include/bits/byteswap.h 13327 .a. -rw-r--r-- root/www root /usr/include/bits/confname.h 168 .a. -rw-r--r-- root/www root /usr/include/bits/endian.h 2283 .a. -rw-r--r-- root/www root /usr/include/bits/errno.h 5107 .a. -rw-r--r-- root/www root /usr/include/bits/fcntl.h 4647 .a. -rw-r--r-- root/www root /usr/include/bits/in.h 3406 .a. -rw-r--r-- root/www root /usr/include/bits/posix_opt.h 2842 .a. -rw-r--r-- root/www root /usr/include/bits/select.h 4673 .a. -rw-r--r-- root/www root /usr/include/bits/sigset.h 1716 .a. -rw-r--r-- root/www root /usr/include/bits/sockaddr.h 9033 .a. -rw-r--r-- root/www root /usr/include/bits/socket.h 1297 .a. -rw-r--r-- root/www root /usr/include/bits/stdio_lim.h 2015 .a. -rw-r--r-- root/www root /usr/include/bits/time.h 4673 .a. -rw-r--r-- root/www root /usr/include/bits/types.h 1781 .a. -rw-r--r-- root/www root /usr/include/bits/uio.h 1798 .a. -rw-r--r-- root/www root /usr/include/endian.h 2481 .a. -rw-r--r-- root/www root /usr/include/errno.h 4579 .a. -rw-r--r-- root/www root /usr/include/fcntl.h 9433 .a. -rw-r--r-- root/www root /usr/include/features.h 5861 .a. -rw-r--r-- root/www root /usr/include/getopt.h 973 .a. -rw-r--r-- root/www root /usr/include/gnu/stubs.h 10291 .a. -rw-r--r-- root/www root /usr/include/libio.h 17327 .a. -rw-r--r-- root/www root /usr/include/netdb.h 10779 .a. -rw-r--r-- root/www root /usr/include/netinet/in.h 1591 .a. -rw-r--r-- root/www root /usr/include/netinet/in_systm.h 9086 .a. -rw-r--r-- root/www root /usr/include/netinet/ip.h 4855 .a. -rw-r--r-- root/www root /usr/include/netinet/tcp.h 2550 .a. -rw-r--r-- root/www root /usr/include/rpc/netdb.h 6467 .a. -rw-r--r-- root/www root /usr/include/stdint.h 20816 .a. -rw-r--r-- root/www root /usr/include/stdio.h 27654 .a. -rw-r--r-- root/www root /usr/include/stdlib.h 13245 .a. -rw-r--r-- root/www root /usr/include/string.h 2104 .a. -rw-r--r-- root/www root /usr/include/strings.h 4932 .a. -rw-r--r-- root/www root /usr/include/sys/cdefs.h 3359 .a. -rw-r--r-- root/www root /usr/include/sys/select.h 7996 .a. -rw-r--r-- root/www root /usr/include/sys/socket.h 1577 .a. -rw-r--r-- root/www root /usr/include/sys/sysmacros.h 5337 .a. -rw-r--r-- root/www root /usr/include/sys/time.h 5299 .a. -rw-r--r-- root/www root /usr/include/sys/types.h 1907 .a. -rw-r--r-- root/www root /usr/include/sys/uio.h 9314 .a. -rw-r--r-- root/www root /usr/include/time.h 36708 .a. -rw-r--r-- root/www root /usr/include/unistd.h 874 .a. -rw-r--r-- root/www root /usr/lib/crtn.o 1446620 .a. -rwxr-xr-x root/www root /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/cc1 46816 .a. -rwxr-xr-x root/www root /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/collect2 88444 .a. -rwxr-xr-x root/www root /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/cpp 1424 .a. -rw-r--r-- root/www root /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/crtend.o 5794 .a. -rw-r--r-- root/www root /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h 9834 .a. -rw-r--r-- root/www root /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h 770000 .a. -rw-r--r-- root/www root /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/libgcc.a 1957 .a. -rw-r--r-- root/www root /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/specs 178 .a. -rw-r--r-- root/www root /usr/lib/libc.so 69638 .a. -rw-r--r-- root/www root /usr/lib/libc_nonshared.a 6162 .a. -rw-r--r-- 1046 squid /usr/src/linux/include/asm-i386/errno.h 1492 .a. -rw-r--r-- 1046 squid /usr/src/linux/include/asm-i386/socket.h 277 .a. -rw-r--r-- 1046 squid /usr/src/linux/include/asm-i386/sockios.h 305 .a. -rw-r--r-- 1046 squid /usr/src/linux/include/linux/errno.h Apr 13 100 16:02:44 702 mcmc -rwxr-xr-x root/www root /etc/rc.d/rc.local 1024 mcmc drwxr-xr-x root/www root /root/.ncftp 9 mcmc lrwxrwxrwx root/www root /root/.ncftp/history 9 mcmc lrwxrwxrwx root/www root /root/.ncftp/log 9 mcmc lrwxrwxrwx root/www root /root/.ncftp/trace 29696 m.c drwxr-xr-x root/www root /usr/bin 17016 m.c -rwxr-xr-x root/www root /usr/bin/rpc.wall 8460 .a. -rw-r--r-- root/www root /usr/lib/crt1.o 1124 .a. -rw-r--r-- root/www root /usr/lib/crti.o 1892 .a. -rw-r--r-- root/www root /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/crtbegin.o . . . Apr 15 100 05:55:09 1024 mcmc drwxr-xr-x root/www root /var/named 1024 mcmc drwxr-xr-x root/www root /var/named/ADMROCKS Apr 15 100 05:56:19 20437 .a. -rwxr-xr-x root/www root /usr/sbin/tcpd Apr 15 100 05:56:20 34 .aa -rw-r--r-- root/www root /usr/libexec/awk/addy.awk 35628 .a. -rwxr-xr-x root/www root /usr/sbin/in.telnetd Apr 15 100 05:56:26 159576 .a. -rwxr-xr-x root/www root /usr/bin/pico 975 .a. -rw-r--r-- root/www root /usr/share/terminfo/v/vt200 975 .a. -rw-r--r-- root/www root /usr/share/terminfo/v/vt220 -------------------------------------------------------------------------- 從這個輸出中可以觀察到如下信息 o 2000年4月13號16:02創(chuàng)建/bin/login、運(yùn)行/bin/chown o 與此同時,運(yùn)行g(shù)cc/egcs進(jìn)行編譯,創(chuàng)建了/bin/old和/bin/xstat。.h文件的 Access times表明被編譯的程序使用了socket o 接下來/etc/rc.d/rc.local被修改,在最后增加了一行"/usr/bin/rpc.wall",于 是每次重啟系統(tǒng)時都會自動啟動Agent。ncftp日志文件被修改(先刪除,然后符號 鏈接到/dev/null以阻止ncftp文件傳輸日志產(chǎn)生) o 程序/usr/bin/rpc.wall被修改,C運(yùn)行時庫被訪問過,這意味著rpc.wall運(yùn)行過。 o 4月15號05:55,似乎有一次針對本機(jī)的ADM named遠(yuǎn)程緩沖區(qū)溢出攻擊,然后訪問 tcpd wrapped service激活in.telnetd。rootkit的配置文件 /usr/libexec/awk/addy.awk也被訪問過。我們不清楚這是否僅僅碰巧是第三次入 侵企圖。 o 6秒后/usr/bin/pico被運(yùn)行,vt200終端類型。既然被安裝了特洛伊木馬的login包 含"vt200"字符串,可以確認(rèn)遠(yuǎn)程root shell后門至少兩天前就安裝好了。 管理員只刪除了/etc/passwd中的"inertia"帳號,并未刪除/etc/shadow中的相應(yīng)內(nèi)容 -------------------------------------------------------------------------- inertia:iUCNir1cd8pI2::::::: -------------------------------------------------------------------------- 不到1秒就破解出這個口令"hi" 用strings命令觀察/bin/login,帶有典型的特洛伊木馬特征,一個非標(biāo)準(zhǔn)命令(這里 是/usr/bin/xstat)和一個嵌入式終端類型(vt200)用于激活遠(yuǎn)程root shell -------------------------------------------------------------------------- . . . login /bin/sh /usr/bin/xstat TERM bcshjvmudzwxftejk vt200 %s=%s init.c . . . -------------------------------------------------------------------------- 用strings命令觀察/bin/ls和/bin/ps,顯示rootkit配置文件分別是 /usr/libexec/awk/files.awk和/usr/libexec/awk/ps.awk。另一個配置文件是前面 提到的/usr/libexec/awk/addy.awk。 一個有用的竅門在于標(biāo)準(zhǔn)Linux rootkit編譯時(由Makefile決定)保留了調(diào)試信息 -------------------------------------------------------------------------- . . . ls.c /home/XXXXX/stuff/lrk4/fileutils-3.13/src/ gcc2_compiled. int:t1=r1;-2147483648;2147483647; char:t2=r2;0;127; . . . -------------------------------------------------------------------------- 本機(jī)并未使用telnetd支持遠(yuǎn)程登錄,而是SSH。入侵者在/etc/inetd.conf中增加了 如下內(nèi)容 -------------------------------------------------------------------------- . . . #finger stream tcp nowait root /usr/sbin/tcpd in.fingerd #cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd #systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx #netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet working stream tcp nowait root /usr/sbin/tcpd in.telnetd . . . -------------------------------------------------------------------------- 然后在/etc/services中增加了如下內(nèi)容 -------------------------------------------------------------------------- working 1120/tcp # Kerberos working daemon -------------------------------------------------------------------------- 用lsof可以看到這個偵聽端口 -------------------------------------------------------------------------- inetd 353 root 4u IPv4 375 UDP *:talk inetd 353 root 5u IPv4 376 UDP *:ntalk inetd 353 root 6u IPv4 377 TCP *:working (LISTEN) inetd 353 root 8u IPv4 378 TCP *:time (LISTEN) inetd 353 root 10u IPv4 379 UDP *:time inetd 353 root 11u IPv4 380 TCP *:auth (LISTEN) inetd 353 root 12u IPv4 381 TCP *:linuxconf (LISTEN) -------------------------------------------------------------------------- ☆ 附錄E - 對印第安納大學(xué)Handler系統(tǒng)的分析 2000年4月20日印第安納大學(xué)IT安全辦公室接到華盛頓大學(xué)Dave Dittrich的通知(隨 后是Penn State),在華盛頓大學(xué)確認(rèn)一臺類似Trinoo Agent的主機(jī)正以偽造過的源 IP進(jìn)行DoS攻擊,該Agent的二進(jìn)制文件中固化有印第安納大學(xué)所屬IP。 首先我們阻斷了與該IP相關(guān)的進(jìn)出通訊,并記錄一切入連接企圖。主要意圖是避免該 IP引起更多麻煩,但我們不想驚動入侵者。沒有重啟主機(jī)或者其它針對網(wǎng)絡(luò)的物理改 變(比如拔掉網(wǎng)線),以免運(yùn)行在主機(jī)上的程序監(jiān)測到這些行為并刪除自身。 譯注: 這個想法好,監(jiān)測拔掉網(wǎng)線的行為并銷毀自身。一般安全工程師給客戶的建議 中就有,如果條件允許,盡可能先拔掉網(wǎng)線再檢查。現(xiàn)在看來,應(yīng)該是從路由 上阻斷通訊,而不是拔掉網(wǎng)線。 一旦系統(tǒng)與網(wǎng)絡(luò)其它部分隔離開來,我們就可以運(yùn)行l(wèi)sof,輸出報(bào)告在后面。這個輸 出表明進(jìn)程rpc.wall偵聽好幾個UDP端口,其中包括6838/UDP,Dittrich先生提到他 那邊的Agent進(jìn)程向該端口發(fā)送報(bào)文。/usr/bin/...被打開讀取了幾百次,這個文件 包含一個IP列表,做了點(diǎn)簡單的ASCII變換加密。這些IP地址似乎是受該Handler控制 的Agent(s)地址。華盛頓大學(xué)那臺Agent確實(shí)在這個列表里。我們發(fā)現(xiàn)一個類似的文 件/dev/grab/...,想必為另一個master server所用。 這種文件中包含類似行 ckd`chj`cc`jb< ASCII變換加密僅僅是在每個字符上增加50,所以最終IP是(減去50即可得到) 192.168.11.80 可以用如下Unix命令一次性轉(zhuǎn)換完畢 tr ‘b-k`‘ ‘0-9.‘ | sed ‘s/<$//‘ 我們得到76個IP地址,大概都是DDoS slave agents. 通過搜索原始設(shè)備(raw disk)找到了rpc.wall的源代碼。入侵者很好地刪除了原來的 源代碼,不僅釋放了inode,也清除了內(nèi)容本身。但是在編譯過程中沒有使用 gcc -pipe,預(yù)編譯代碼被寫入一個臨時文件,最終傳遞給編譯器。盡管這個臨時文 件由編譯器刪除了,但這種刪除未能清除內(nèi)容本身,通過讀取原始設(shè)備可以還原出來。 分析這個源代碼后,發(fā)現(xiàn)它能進(jìn)行"stream"、"mstream"攻擊。mstream攻擊顯然是多 個IP同時進(jìn)行stream攻擊。我們相信這將導(dǎo)致比先前所見更大范圍的DDoS攻擊。 還原出來的源代碼附在報(bào)告尾部。 此刻我們意識到這是相當(dāng)重要的證據(jù),于是用dd將整個文件系統(tǒng)復(fù)制出來,通過網(wǎng)絡(luò) 傳輸?shù)焦P記本電腦上。然后可以只讀mount這個文件繼續(xù)檢查 在/bin/下發(fā)現(xiàn)名為flukek.tgz的rootkit。它替換了cron、in.timed、inetd、login、 named、passwd、rshd、syslogd、tcpd等等。下列文件自系統(tǒng)安裝以來被增加到/bin、 /sbin、/usr/bin以及/usr/sbin中。似乎沒有文件被增加到/usr/libexec或 /usr/local中。列出的時間是inode change times,/usr/bin/old似乎是以前的 login -rw-r--r-- 1 root wheel 2387704 Dec 18 16:37 bin/flukek.tgz -r-sr-xr-x 1 root daemon 12656 Apr 13 23:39 bin/login -rw-r--r-- 1 root wheel 1401 Apr 24 12:11 usr/bin/... -rwsr-xr-x 1 root wheel 20164 Mar 31 14:50 usr/bin/old -rwxr-xr-x 1 root wheel 33610 Apr 13 23:37 usr/bin/rpc.wall -rwxr-xr-x 1 root wheel 32727 Apr 5 21:56 usr/bin/xfs -r-xr-xr-x 1 root daemon 20164 Mar 31 14:50 usr/bin/xstat -rwxr-xr-x 1 root wheel 111500 Mar 31 20:09 usr/sbin/dnskeygen -rwxr-xr-x 1 root wheel 266712 Mar 31 20:09 usr/sbin/irpd -rwxr-xr-x 1 root wheel 528612 Mar 31 20:09 usr/sbin/named -rwxr-xr-x 1 root wheel 7166 Mar 31 20:09 usr/sbin/named-bootconf -rwxr-xr-x 1 root wheel 285076 Mar 31 20:09 usr/sbin/named-xfer -rwxr-xr-x 1 root wheel 37056 Mar 31 20:09 usr/sbin/ndc 似乎沒有庫文件、內(nèi)核模塊或PAM模塊被替換。 /etc/passwd和/etc/shadow最近被修改過 -rw-r--r-- 1 root wheel 849 Feb 17 00:57 /mnt/etc/passwd -rw------- 1 root wheel 884 Feb 17 00:57 /mnt/etc/passwd- -r-------- 1 root wheel 794 Feb 17 00:57 /mnt/etc/shadow -r-------- 1 root wheel 658 Nov 15 10:07 /mnt/etc/shadow- /etc/shadow的備份文件于11月5日創(chuàng)建,這給了我們一個何時增加帳號的線索 www:MyjKA0KGHplq6:11004:0:99999:7::: login1:MyjKA0KGHplq6:11004:0:99999:7::: web:af47L/OTL7K6.:11004:0:99999:7::: x::11004:0:99999:7::: 我沒有試圖破解這些口令,僅僅試著以"x"登錄,失敗了。 /etc/services和/etc/inetd.conf被改變 /etc/services: a 1111/tcp /etc/inetd.conf a stream tcp nowait root /usr/sbin/tcpd in.telnetd 同樣,我并示試圖登錄它 譯注: 如果這樣,我們可以大范圍掃描1111/TCP,結(jié)合前面那個RID 下面三個文件是現(xiàn)在所能找到的惟一含有相關(guān)信息的日志文件 /.bash_history: nslookup cd /bin w ps x ftp 192.168.0.1 21 w /var/log/secure: Mar 29 18:39:18 herc in.ftpd[824]: connect from 10.156.97.157 Mar 29 19:29:15 herc in.ftpd[876]: connect from 10.156.97.111 Mar 29 19:49:58 herc in.ftpd[882]: connect from 10.156.97.111 Mar 29 19:50:21 herc in.ftpd[887]: connect from 10.156.97.111 Mar 31 14:58:14 herc in.telnetd[4224]: connect from 10.54.115.105 Apr 3 23:54:02 herc in.telnetd[10403]: connect from 10.72.135.165 Apr 4 05:44:34 herc in.telnetd[11235]: connect from 10.103.26.127 Apr 4 08:28:28 herc in.ftpd[11397]: connect from 10.31.68.158 Apr 4 11:36:16 herc in.ftpd[11565]: connect from 10.31.68.158 Apr 7 05:33:32 herc in.telnetd[16737]: connect from 10.22.82.6 Apr 7 07:32:19 herc in.telnetd[16849]: connect from 10.22.82.6 Apr 7 07:33:01 herc in.telnetd[16851]: connect from 10.22.82.6 Apr 7 07:33:20 herc in.ftpd[16852]: connect from 10.22.82.6 Apr 7 07:34:11 herc in.ftpd[16855]: connect from 10.22.82.6 Apr 7 07:35:22 herc in.ftpd[16859]: connect from 10.22.82.6 Apr 7 07:37:02 herc in.rlogind[16860]: connect from 10.22.82.2 Apr 7 07:37:12 herc in.fingerd[16863]: connect from 10.22.82.2 Apr 7 07:37:18 herc in.rexecd[16866]: connect from 10.22.82.2 Apr 7 07:37:22 herc in.rshd[16867]: connect from 10.22.82.2 Apr 7 07:37:24 herc in.telnetd[16868]: connect from 10.22.82.2 Apr 7 07:37:30 herc in.ftpd[16870]: connect from 10.22.82.2 Apr 8 13:53:02 herc in.ftpd[19028]: connect from 10.247.49.53 Apr 10 23:00:05 herc in.ftpd[23304]: connect from 10.8.148.36 Apr 10 23:07:51 herc in.ftpd[23347]: connect from 10.8.148.36 Apr 13 06:50:02 herc in.telnetd[27895]: connect from 10.215.99.125 Apr 13 10:52:27 herc in.ftpd[28170]: connect from 10.114.238.145 Apr 13 10:55:50 herc in.ftpd[28171]: connect from 10.114.238.145 Apr 13 11:02:39 herc in.ftpd[28217]: connect from 10.114.238.145 Apr 16 16:29:47 herc in.ftpd[1734]: connect from 10.161.208.34 Apr 16 16:30:10 herc in.ftpd[1737]: connect from 10.161.208.34 Apr 23 18:59:36 herc in.telnetd[14746]: connect from 10.27.211.234 Apr 24 17:02:03 herc in.telnetd[16505]: connect from 10.79.16.203 /var/log/wtmp (reverse chronological order): root pts/2 :0 Mon Apr 24 18:05 still logged in root pts/0 :0 Mon Apr 24 17:24 still logged in ftp ftp XXXXXX-XXXXXXXX. Thu Apr 13 10:02 - 10:02 (00:00) ftp ftp XXXXXX-XXXXXXXX. Thu Apr 13 09:55 - 09:56 (00:00) ftp ftp XXXXXXX-X.XXXXXX Mon Apr 10 22:07 - 22:09 (00:01) ftp ftp XXX.XXX.82.6 Fri Apr 7 06:34 - 06:35 (00:00) ftp ftp XXX.XXX.82.6 Fri Apr 7 06:33 - 06:34 (00:00) ftp ftp XXXXX.XX-XXXXXXX Tue Apr 4 10:36 - 10:36 (00:00) ftp ftp XXXXXXXX-XXXX.XX Wed Mar 29 19:50 - 19:50 (00:00) ftp ftp XXXXXXXX-XXXX.XX Wed Mar 29 19:29 - 19:29 (00:00) reboot system boot Wed Mar 29 16:17 (26 20:09) 下面是lsof的輸出,編輯過 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME . . . inetd 378 root cwd DIR 3,1 1024 2 / inetd 378 root rtd DIR 3,1 1024 2 / inetd 378 root txt REG 3,1 18020 143469 /usr/sbin/inetd inetd 378 root mem REG 3,1 342206 30722 /lib/ld-2.1.1.so inetd 378 root mem REG 3,1 4016683 30729 /lib/libc-2.1.1.so inetd 378 root mem REG 3,1 251436 30766 /lib/libnss_nisplus-2.1.1.so inetd 378 root mem REG 3,1 364235 30742 /lib/libnsl-2.1.1.so inetd 378 root mem REG 3,1 243964 30760 /lib/libnss_files-2.1.1.so inetd 378 root 0u CHR 1,3 2071 /dev/null inetd 378 root 1u CHR 1,3 2071 /dev/null inetd 378 root 2u CHR 1,3 2071 /dev/null inetd 378 root 4u inet 506 TCP *:ftp (LISTEN) inetd 378 root 5u inet 507 TCP *:telnet (LISTEN) inetd 378 root 6u inet 508 TCP *:shell (LISTEN) inetd 378 root 7r FIFO 0,0 499 pipe inetd 378 root 8u inet 509 TCP *:login (LISTEN) inetd 378 root 9u CHR 5,1 2113 /dev/console inetd 378 root 10u inet 510 TCP *:exec (LISTEN) inetd 378 root 11u inet 511 UDP *:talk inetd 378 root 12u inet 512 UDP *:ntalk inetd 378 root 13u inet 513 TCP *:finger (LISTEN) inetd 378 root 14u inet 514 TCP *:auth (LISTEN) inetd 378 root 15u inet 515 TCP *:linuxconf (LISTEN) inetd 378 root 16u inet 516 TCP *:a (LISTEN) inetd 378 root 21w FIFO 0,0 499 pipe . . . rpc.wall 29108 root cwd DIR 3,1 31744 59393 /usr/bin rpc.wall 29108 root rtd DIR 3,1 1024 2 / rpc.wall 29108 root txt REG 3,1 33610 61172 /usr/bin/rpc.wall rpc.wall 29108 root mem REG 3,1 342206 30722 /lib/ld-2.1.1.so rpc.wall 29108 root mem REG 3,1 65996 30758 /lib/libnss_dns-2.1.1.so rpc.wall 29108 root mem REG 3,1 4016683 30729 /lib/libc-2.1.1.so rpc.wall 29108 root mem REG 3,1 243964 30760 /lib/libnss_files-2.1.1.so rpc.wall 29108 root mem REG 3,1 251436 30766 /lib/libnss_nisplus-2.1.1.so rpc.wall 29108 root mem REG 3,1 364235 30742 /lib/libnsl-2.1.1.so rpc.wall 29108 root mem REG 3,1 251787 30764 /lib/libnss_nis-2.1.1.so rpc.wall 29108 root mem REG 3,1 164797 30770 /lib/libresolv-2.1.1.so rpc.wall 29108 root 0r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 1u CHR 136,1 3 /dev/pts/1 rpc.wall 29108 root 2u CHR 136,1 3 /dev/pts/1 rpc.wall 29108 root 3u inet 36066 TCP *:15104 (LISTEN) rpc.wall 29108 root 4u CHR 136,1 3 /dev/pts/1 rpc.wall 29108 root 5u inet 36067 UDP *:6838 rpc.wall 29108 root 6r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 7r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 8r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 9r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 10r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 11r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 12r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 13r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 14r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 15r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 16r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 17r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 18r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 19r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 20r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 21u inet 38990 UDP *:2000 rpc.wall 29108 root 22r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 23u inet 38992 UDP *:2001 rpc.wall 29108 root 24r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 25u inet 38996 UDP *:2002 rpc.wall 29108 root 26r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 27u inet 38997 UDP *:2003 rpc.wall 29108 root 28r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 29u inet 39001 UDP *:2004 rpc.wall 29108 root 30r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 31u inet 39002 UDP *:2005 rpc.wall 29108 root 32r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 33u inet 39003 UDP *:2006 rpc.wall 29108 root 34r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 35u inet 39007 UDP *:2007 rpc.wall 29108 root 36r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 37u inet 39011 UDP *:2008 rpc.wall 29108 root 38r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 39u inet 39012 UDP *:2009 rpc.wall 29108 root 40r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 41u inet 39016 UDP *:2010 rpc.wall 29108 root 42r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 43u inet 39017 UDP *:2011 rpc.wall 29108 root 44r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 45u inet 39018 UDP *:2012 rpc.wall 29108 root 46r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 47u inet 39019 UDP *:2013 rpc.wall 29108 root 48r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 49u inet 39020 UDP *:2014 rpc.wall 29108 root 50r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 51u inet 39027 UDP *:2016 rpc.wall 29108 root 52r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 53u inet 39028 UDP *:2017 rpc.wall 29108 root 54r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 55u inet 39029 UDP *:2018 rpc.wall 29108 root 56r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 57u inet 39033 UDP *:2019 rpc.wall 29108 root 58r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 59u inet 39034 UDP *:2020 rpc.wall 29108 root 60r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 61u inet 39038 UDP *:2021 rpc.wall 29108 root 62r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 63u inet 39039 UDP *:2022 rpc.wall 29108 root 64r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 65r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 66u inet 39101 UDP *:2024 rpc.wall 29108 root 67r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 68r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 69u inet 39109 UDP *:2025 rpc.wall 29108 root 70r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 71u inet 39129 UDP *:2026 rpc.wall 29108 root 72r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 73u inet 39185 UDP *:2027 rpc.wall 29108 root 74r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 75u inet 39186 UDP *:2028 rpc.wall 29108 root 76r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 77u inet 39190 UDP *:2029 rpc.wall 29108 root 78r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 79u inet 39195 UDP *:2030 rpc.wall 29108 root 80r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 81u inet 39200 UDP *:2032 rpc.wall 29108 root 82r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 83u inet 39204 UDP *:2033 rpc.wall 29108 root 84r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 85u inet 39208 UDP *:2035 rpc.wall 29108 root 86r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 87u inet 39215 UDP *:2036 rpc.wall 29108 root 88r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 89u inet 39216 UDP *:2037 rpc.wall 29108 root 90r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 91u inet 39223 UDP *:2038 rpc.wall 29108 root 92r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 93r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 94r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 95r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 96r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 97r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 98r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 99r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 100r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 101r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 102r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 103r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 104r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 105r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 106r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 107r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 108r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 109r REG 3,1 1401 198670 /usr/bin/... rpc.wall 29108 root 110r REG 3,1 1401 198670 /usr/bin/... 來源:http://www.nsfocus.com
相關(guān)文章
SQLMap簡介及簡單應(yīng)用實(shí)例圖文詳解
一個自動化的SQL注入工具,其主要功能是掃描、發(fā)現(xiàn)并利用給定URL的SQL注入漏洞,內(nèi)置了很多繞過插件,支持的數(shù)據(jù)庫是MySQL 、Oracle 、PostgreSQL 、Microsoft SQL Server2023-02-04- Nmap是一款網(wǎng)絡(luò)掃描和主機(jī)檢測的非常有用的工具。Nmap是不局限于僅僅收集信息和枚舉,同時可以用來作為一個漏洞探測器或安全掃描器。它可以適用于winodws,linux,mac等操作2019-03-16
SQLMAP注入檢查方法 11種常見SQLMAP使用方法詳解
sqlmap也是滲透中常用的一個注入工具,其實(shí)在注入工具方面,很多人都是通過這個工具實(shí)施的檢測與注入,對于我們從事安全防御的人來說,一定要引起注意,一般的程序員寫的代2018-08-16- 這篇文章主要介紹了lcx用法之心得總結(jié),需要的朋友可以參考下2017-09-06
lcx端口轉(zhuǎn)發(fā)詳細(xì)介紹及使用方法(lcx內(nèi)網(wǎng)轉(zhuǎn)發(fā)姿勢)
這篇文章主要介紹了lcx端口轉(zhuǎn)發(fā)詳細(xì)介紹及使用方法(lcx內(nèi)網(wǎng)轉(zhuǎn)發(fā)姿勢),需要的朋友可以參考下2017-09-06- 這是我們的Nmap備忘單的第四部分,本文中我們將討論更多東西關(guān)于掃描防火墻,IDS / IPS 逃逸,Web服務(wù)器滲透測試等。在此之前,我們應(yīng)該了解一下防火墻的一些基礎(chǔ)知識以便2016-12-27
- 眾所周知NMAP是經(jīng)常用來進(jìn)行端口發(fā)現(xiàn)、端口識別。除此之外我們還可以通過NMAP的NSE腳本做很多事情,比如郵件指紋識別,檢索WHOIS記錄,使用UDP服務(wù)等2016-12-27
- 這是我們的第二期NMAP備忘單,基本上,我們將討論一些高級NMAP掃描的技術(shù),我們將進(jìn)行一個中間人攻擊(MITM)?,F(xiàn)在,游戲開始了2016-12-27
- nmap是一個網(wǎng)絡(luò)連接端掃描軟件,用來掃描網(wǎng)上電腦開放的網(wǎng)絡(luò)連接端。確定哪些服務(wù)運(yùn)行在哪些連接端,并且推斷計(jì)算機(jī)運(yùn)行哪個操作系統(tǒng)(這是亦稱 fingerprinting)。它是網(wǎng)2016-12-27
網(wǎng)絡(luò)漏洞掃描工具Acunetix Web Vulnerability Scanner(AWVS)使用介紹
Acunetix Web Vulnerability Scanner(簡稱AWVS)是一款知名的網(wǎng)絡(luò)漏洞掃描工具,它通過網(wǎng)絡(luò)爬蟲測試你的網(wǎng)站安全,檢測流行安全漏洞。倫敦時間2015年6月24日,官方發(fā)布了2016-09-28