太陽(yáng)照常升起,我依然活著

          Cmd的終極防守

          一  前言
              翻開網(wǎng)絡(luò)上的入侵資料看看吧!大多數(shù)的入侵都是在cmd下完成的,比較典型的有溢出得到一個(gè)system權(quán)限的cmdshell,然后種植一個(gè)Tcmd之 類綁定了cmd.exe的后門。也有利用web程序的漏洞得到一個(gè)webshell然后利用低權(quán)限的cmdshell來(lái)提升權(quán)限,最后再種植后門……各種 各樣的攻擊都說(shuō)明入侵和cmd.exe是相關(guān)的,因?yàn)橐粋€(gè)cmd.exe就是一個(gè)用戶與系統(tǒng)交互的一個(gè)接口,是入侵者進(jìn)入系統(tǒng)的首要目標(biāo)。當(dāng)然,我們不能 在這里坐以待斃,如何防止別人通過(guò)溢出得到你的cmdshell,如何知道別人已經(jīng)進(jìn)入系統(tǒng)并且獲得cmdshell,如何在人家登陸到我們機(jī)器的時(shí)候抓 住入侵者呢?現(xiàn)在就讓我們打造一個(gè)cmd下的終極防線吧。
          二  原理
              網(wǎng)絡(luò)上談得比較多的一種防范的方法是將cmd.exe設(shè)置權(quán)限,這樣的確可以起到很大的作用,但是權(quán)限比較難以確定,并且如果別人自己上傳cmd.exe 的話還是可以突破的,然后用nc綁定cmd.exe到一個(gè)端口還是可以得到cmdshell。今天我給大家介紹一種新的方法,不用設(shè)置cmd的權(quán)限哦!首 先說(shuō)說(shuō)原理,還是打開你的cmd命令窗口,運(yùn)行命令cmd /?,看看得到了什么吧!如圖一。
          =800) window.open('http://www.anqn.com/pic/6/a2007-12-20-734377.JPG');" onload="if(this.width>'800')this.width='800';" border="0">
          注意以下內(nèi)容:
          如果 /D 未在命令行上被指定,當(dāng) CMD.EXE 開始時(shí),它會(huì)尋找以下 REG_SZ/REG_EXPAND_SZ 注冊(cè)表變量。如果其中一個(gè)或兩個(gè)都存在,這兩個(gè)變量會(huì)先被執(zhí)行。
              HKEY_LOCAL_MACHINE"Software"Microsoft"Command Processor"AutoRun
                  和/或
              HKEY_CURRENT_USER"Software"Microsoft"Command Processor"AutoRun
          也 就是說(shuō)如果存在HKEY_LOCAL_MACHINE"Software"Microsoft"Command Processor"AutoRun和HKEY_CURRENT_USER"Software"Microsoft"Command Processor"AutoRun這兩個(gè)鍵值并且你不是用cmd.exe /D啟動(dòng)cmd進(jìn)程的話會(huì)在啟動(dòng)cmd.exe之前先去執(zhí)行這兩個(gè)鍵值指定的程序。嘿嘿,想到什么了,既然可以先于cmd.exe之前執(zhí)行自己的程序或者 腳本,我們就完全可以控制cmd.exe的動(dòng)作了。
          三  實(shí)戰(zhàn)
              我們找到了我們可以利用的東西,現(xiàn)在看看如何利用cmd.exe的這個(gè)特性來(lái)做些什么吧!關(guān)鍵是編輯
          HKEY_CURRENT_USER"Software"Microsoft"Command Processor"AutoRun的內(nèi)容(沒(méi)有的話你可以新建一個(gè))為你自定義的一個(gè)腳本的位置,為了方便我們可以使用批處理,我的系統(tǒng)是2000 adv server。譬如你可以在c:"winnt"system32下寫入一個(gè)cmd.bat的批處理文件,內(nèi)容為你希望在啟動(dòng)cmd.exe進(jìn)程之前要運(yùn)行 的命令,然后編輯HKEY_CURRENT_USER"Software"Microsoft"Command Processor"AutoRun的內(nèi)容為c:"winnt"system32"cmd.bat如圖二。
          =800) window.open('http://www.anqn.com/pic/6/a2007-12-20-580821.JPG');" onload="if(this.width>'800')this.width='800';" border="0" width="800">
          假 設(shè)你的機(jī)器并不是經(jīng)常及時(shí)打上補(bǔ)丁,你就可以編輯system32下cmd.bat的內(nèi)容為exit,這樣就抵御黑客的遠(yuǎn)程溢出攻擊了,因?yàn)橐话愕囊绯鲆? 么是反彈一個(gè)cmdshell要么是綁定一個(gè)cmdshell,而溢出的shellcode執(zhí)行cmd之后會(huì)首先運(yùn)行的是我們指定的cmd.bat里面的 內(nèi)容,而內(nèi)容正是exit退出,這里為了給大家示范我指定的命令是pause命令,如圖三。
          =800) window.open('http://www.anqn.com/pic/6/a2007-12-20-621945.JPG');" onload="if(this.width>'800')this.width='800';" border="0">
          這樣不知道真相的人肯定會(huì)很郁悶的,即使知道真相如果他是一般的菜鳥的我想對(duì)這樣的問(wèn)題他也是束手無(wú)策吧,除非他使用的是其他的shellcode。
          光是這樣的防范還沒(méi)有什么意思,我們最好能夠抓住入侵者,那我們就好好的寫這個(gè)cmd.bat腳本吧!要抓住入侵者或者想知道入侵事件發(fā)生的時(shí)間我們可以定義cmd.bat的內(nèi)容如下:
          @echo off                                                                      ""關(guān)閉命令回顯""
          @netstat -an>>c:"winnt"system32"net.log                                        ""取得當(dāng)前的網(wǎng)絡(luò)連接狀態(tài)并輸出到net.log文件,用>>重定向是避免日志被后來(lái)的沖洗掉""
          @date /t>>c:"winnt"system32"date.log                                            ""取得入侵發(fā)生的時(shí)間""
          @time /t>>c:"winnt"system32"time.log
          @exit                                                                            ""退出""
          這樣當(dāng)有人溢出的時(shí)候他的IP就在日志里啦!你完全可以根據(jù)自己的情況補(bǔ)充這個(gè)腳本的內(nèi)容,如查看進(jìn)程,查看端口關(guān)聯(lián)等等,因?yàn)椴皇窍到y(tǒng)自帶的程序我就不給大家展示了!
              但是是不是只能做這么多呢?看到以前的雜志有人寫用telnet愚弄入侵者,有了今天的方法可不只能用telnet愚弄入侵者了,所有的綁定cmd.exe的程序都可以被我們愚弄的。譬如我們?cè)赾md.bat里寫上:
          @echo off                                                            ""關(guān)閉命令回顯""
          @netstat -an>>c:"winnt"system32"net.log                              ""取得當(dāng)前的網(wǎng)絡(luò)連接狀態(tài)并輸出到net.log文件,用>>重定向是避免日志被后來(lái)的沖洗掉""
          @date /t>>c:"winnt"system32"date.log                                ""取得入侵發(fā)生的時(shí)間""
          @time /t>>c:"winnt"system32"time.log
          @type c:"winnt"system32"cmd.txt                                      ""打印cmd.txt的內(nèi)容,也是由我們自己定義的""
          @pause                                                                ""暫停程序,讓入侵者惋惜去吧!""
          @exit                                                                  ""退出程序""
          這樣我們就可以對(duì)入侵者喊話了,喊些什么呢?罵人的話就不要喊了,我這里就給自己做個(gè)廣告吧,別人telnet上來(lái)我的機(jī)器上時(shí)如圖四
          =800) window.open('http://www.anqn.com/pic/6/a2007-12-20-360219.JPG');" onload="if(this.width>'800')this.width='800';" border="0">
          我的日志內(nèi)容如圖五。
          =800) window.open('http://www.anqn.com/pic/6/a2007-12-20-371198.JPG');" onload="if(this.width>'800')this.width='800';" border="0">
          其實(shí)從任何的cmd后門上登陸時(shí)都是這樣的效果,我的Tcmd就很郁悶,呵呵!這些在webshell里也是很有奇效的,大家還可以發(fā)揮自己的想象力哦,沒(méi)有什么做不到的。
          四  總結(jié)
              文章沒(méi)有什么高深的東西,其實(shí)就是cmd的一個(gè)屬性,與設(shè)置權(quán)限配合使用,用得好的話效果還是很不錯(cuò)的。有人要問(wèn)了,這樣設(shè)置以后我們自己?jiǎn)?dòng)cmd怎么 辦,很好說(shuō)的,就是運(yùn)行的時(shí)候用cmd /D參數(shù)啟動(dòng)就可以了。有什么問(wèn)題或者建議歡迎到論壇討論,我的ID是劍心。(相關(guān)代碼已經(jīng)收錄)
          附:
          cmd.bat
          @echo off
          @netstat -an>>c:"winnt"system32"net.log
          @date /t>>c:"winnt"system32"date.log
          @time /t>>c:"winnt"system32"time.log
          @echo on
          @type c:"winnt"system32"cmd.txt
          @pause
          @exit
          cmd.reg
          Windows Registry Editor Version 5.00
          [HKEY_LOCAL_MACHINE"SOFTWARE"Microsoft"Command Processor]
          "AutoRun"="c:""winnt""system32""cmd.bat"

          posted on 2007-12-24 00:15 Athena 閱讀(187) 評(píng)論(0)  編輯  收藏 所屬分類: 操作系統(tǒng)


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 海兴县| 乌审旗| 株洲县| 松阳县| 通州区| 南丹县| 潜山县| 宁强县| 交口县| 那坡县| 陆川县| 南丹县| 东莞市| 义马市| 惠水县| 图片| 寿阳县| 灵石县| 三明市| 长丰县| 大化| 乌鲁木齐市| 大理市| 政和县| 阳曲县| 泾阳县| 建阳市| 阿拉善盟| 凉山| 荆州市| 宝鸡市| 仙游县| 贵阳市| 凌海市| 叙永县| 沭阳县| 沁阳市| 甘洛县| 罗平县| 兰州市| 和静县|