終於可以不用radmin了

進別人機器後,最害怕和機主同時在線,他會輕而易舉的發現你,所以我都是用個監控機主屏幕的玩意,也能滿足一下偷窺的獵奇心理。但是杯具的是,radmin太容易被殺了,不光radmin,任何一個大衆化的監控程序都會輕而易舉被殺,弄了好多殼都沒用。

 

於是費了一番折騰把這個功能做到自己幾年前做的那個遠程監控中,終於,不會被殺了。

 

我那個遠程監控是remoting的服務,之前日誌寫過。

好處是,功能可以後隨時做隨時改,功能和服務分離

即服務中只有保護賬號保護賬號權限保護終端服務監視防火牆規則保護自身免中止等這些不大會變化的固有功能

又加了一個自動檢查更新。

然後就是一個空的代理類,裏面只有一個返回遠程對象和執行遠程方法的代碼。

 

大量的實際功能是本地的一個dll類庫,隨時改隨時寫都可,連接遠程服務的時候,在遠程服務調用這個本地dll,那麼這個本地的dll就順着remoting信道跑到遠程的內存中了,然後本地反射裏面的方法,那麼就實現了遠程執行本地用

 

每次連都要傳輸這個dll嗎?是,.net的優勢體現出來了,就是個頭小,dll裏一大堆一大堆亂七八糟的東西,編譯出來仍然幾十k。

 

其他的功能比如進程、文件、執行什麼的,都可以在這個dll操作,只有遠程監控不行,因爲服務是localsystem賬戶運行,用截圖或者發送鍵盤鼠標合着是發到system用戶而不是administrator

 

所以,必須在administrator下運行一個進程才能監控administrator,那麼怎麼讓administrator運行進程呢,又不知道他密碼,好在有個createprocessasuser api,以用戶的token運行而不是密碼,又好在localsystem可以免費取到所有登錄用戶的token,那麼O(∩_∩)O

 

就這樣那個dll默默地釋放了一個exe到某目錄,這個exe在administrator不知不覺中以他的身份後臺運行了,爲我傳來了他的屏幕,爲我執行了mouse_event keybd_event等。createprocessasuser有個參數可以讓程序後臺運行不顯示。

這個exe應該是console程序而不是winform,如果是winform的,那麼alt+tab好像能看到。

但是無論是console還是winform,進程管理器都能看到,有個方法說是可以在任務管理器隱藏,是c#的,但是我想別這麼麻煩了,我起了一個很像微軟進程的名字,而且殺軟又不報毒,運行又不顯示,誰會一直盯着任務管理器看呢,要是真遇上警惕性這麼高的人,那麼想什麼辦法都會被他發現。

這裏發現了一個問題,釋放這個exe的時候,最好避開system32和windows目錄,因爲最起碼360就報警了,也不要是放到temp下,因爲有的殺軟看到temp下運行程序也會報警,所以,可以釋放到program files下其他安裝程序的目錄中,起個什麼名字呢,最好不要叫svchost.exe,這屬於“僞裝windows進程”,一些殺軟認爲這是“病毒行爲”所以會報警,其實windows進程有很多,比如有個tcpsrv,那麼可以起個udpsrv之類的嘛,這又不會被報警又難以分辨。

 

這個exe一定要周身被try catch包裹起來,即使莫名其妙退出也不能讓他彈出錯誤提示,這可是在administrator賬號下運行的,出錯就會在他桌面上顯示出來。多加try catch,程序可不死。

 

 

缺點,用截屏的api效率不高,傳送回來的時候,最好的當然是bmp,但是個頭太巨大了,其次是png,也是很巨大,我試了一下我的桌面1680*1050的win7特效全開,主題是里約大冒險,api截了這一張圖,用png保存,4兆多,所以還是用jpg保存吧,那個只有400多k,還可以接受,如果還嫌大,那麼就得調jpg的質量了,或者直接gif,gif倒是小了,可是那效果也太慘不忍睹了。那麼可不可以壓縮一下或者有個什麼方法只傳送改變之類的呢,這個就太麻煩了,而且cpu直線上升就得不償失了。

 

 

對了有人說截屏的api截不到視頻和類似的浮動彈出窗口,但是我試着桌面的一切都可以截啊,就像print screen鍵一樣,無論是media player裏播放的視頻還是浮動窗口還是透明窗口,還是輸入法的那個菜單,還有鼠標,都能截下,只有dx遊戲沒試驗過,但是media player是開着dx加速的啊,難道和遊戲的還不一樣?不知道怎麼回事。

radmin截不到鼠標和輸入法彈出菜單,這個太討厭了,輸入文字的時候看不到選擇的列表,只能靠猜。但是截圖api可以截到。

 

 

是不是在system下可以直接截取任意用戶的屏幕而不需要在該用戶身份下運行程序呢,這方面資料沒找到,網上連個問的都沒有,我試了一下,在administrator下把getdesktopwindow或者getwindowdc的handle傳給system下的進程,截了是黑屏,非得在該用戶下運行一程序才行。

 

remoting的效率太低了,本來我是想客戶端只remoting到服務器和那個dll通信,那個dll和exe通信,dll充當中轉站,但是這樣效率低的嚇人,並不是cpu和內存上升,而是remoting的網絡傳輸部分一件事來來回回好多次,造成延遲的厲害,我試了一下通過這種方法,服務器只能一秒鐘傳個1、2張圖的樣子。

所以就得改進一下,那個exe,反向鏈接到我的機器的某端口,過防火牆了,過路由器了。速度上來了。

 

機器是內網,remoting服務端,要upnp一下,得到外網ip,寫到machinename。

upnp網上有一個例子,其實很簡單,就是發一個broadcast廣播,udp的,這樣同一內網段的路由器就會返回給你他的ip和upnp映射的端口,我的這個di-504m是1780端口,別的路由器不一定是這個端口,然後就tcp 192.168.0.1:1780發過去一個指令過去,這個指令最常用的就是添加映射刪除映射更新映射,然後接受返回,看看成功沒,就這麼簡單,通信都是固定的xml格式。

這樣內網自動映射,內網變外網了。

 

可以加上錄音,用directsound或winmm.dll截取聲音傳過來,可以截麥克風的和揚聲器的都行,傳回來。

 

截攝像頭?我進入的機器,也不少了,到現在沒發現一個有攝像頭的,都是服務器。他們連聲卡都沒有,或者關閉。

 

 

現在做了文件系統操作部分,進程操作部分,遠程cmd,和屏幕監控部分了,其他的像註冊表還有什麼的,以後慢慢做吧,服務器端不用動,本地改那個dll就行了,remoting這方面真是挺方便啊。

 

對了,並不限於console登錄的administrator,終端服務登錄的用戶也一樣可以監控,都是同樣的方法,query出token來,然後讓他運行。

 

radmin可以完全替代了。而且最重要的是免殺。

 

 

就是界面醜了一點。

 

 

其實他有防火牆的,只是他剛升級完,圖標緩存有點問題,所以右下角沒顯示出來。

他們是東九區,比咱快1小時。

發佈了31 篇原創文章 · 獲贊 10 · 訪問量 65萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章