以 AnyDesk 為例分析阻止透過網路進行遠端電腦控制的應用程式的可能性

有一天,老闆提出這樣的問題:“為什麼有些人可以遠端存取工作計算機,而無需獲得額外的使用權限?”
任務就是「堵住」漏洞。

以 AnyDesk 為例分析阻止透過網路進行遠端電腦控制的應用程式的可能性
透過網路遠端控制的應用程式有很多:Chrome遠端桌面、AmmyAdmin、LiteManager、TeamViewer、Anyplace Control等。如果Chrome遠端桌面有打擊存取服務的官方手冊,TeamViewer對時間或請求有許可限制從網路和使用者以某種方式“磨牙”到管理員那裡“閃耀”,那麼許多個人使用的最愛- AnyDesk 仍然需要特別注意,特別是如果老闆說“不!”

以 AnyDesk 為例分析阻止透過網路進行遠端電腦控制的應用程式的可能性
如果您知道透過其內容阻止網路資料包是什麼並且您對此感到滿意,那麼其餘資料
不打算 為你。

事實上,試圖從相反的方向走 在線 它說明了程式運作必須允許的內容;相應地,DNS 記錄被阻止 *.net.anydesk.com。 但 AnyDesk 並不簡單;它並不關心屏蔽域名。

曾幾何時,我解決了阻止「Anyplace Control」的問題,該問題是透過一些可疑軟體向我們提供的,並且透過阻止幾個IP(我備份了防毒軟體)就解決了這個問題。 AnyDesk的問題,在我手動收集了十多個IP位址後, 慫恿我 擺脫日常體力勞動。

還發現“C:ProgramDataAnyDesk”中存在多個帶有設定等的文件,並且在該文件中 ad_svc.trace 收集有關連接和失敗的事件。

1. 觀察

如同已經提到的,阻止 *.anydesk.com 並沒有為程式的運作帶來任何結果,因此決定進行分析 壓力情境下的程序行為。 Sysinternals 的 TCPView 就在您手中,出發吧!

以 AnyDesk 為例分析阻止透過網路進行遠端電腦控制的應用程式的可能性

1.1. 可以看到,我們感興趣的幾個進程都“掛了”,只有從外部與該地址通信的進程才是我們感興趣的。 從我所看到的來看,它連接的連接埠是選擇的:80、443、6568。我們絕對不能阻止 80 和 443。

1.2. 透過路由器封鎖該位址後,會悄悄選擇另一個位址。

以 AnyDesk 為例分析阻止透過網路進行遠端電腦控制的應用程式的可能性

1.3. 控制台就是我們的一切! 我們確定了 PID,然後我很幸運,AnyDesk 是由該服務安裝的,因此我們要查找的 PID 是唯一的。
1.4. 我們從進程PID確定服務伺服器的IP位址。

以 AnyDesk 為例分析阻止透過網路進行遠端電腦控制的應用程式的可能性

2.準備

由於識別IP位址的程式可能只能在我的PC上運行,我為了方便和懶惰而沒有任何限制,所以C#。

2.1. 所有用於識別所需 IP 位址的方法都是已知的,但仍有待實施。

string pid1_;//узнаем PID сервиса AnyDesk
using (var p = new Process()) 
{p.StartInfo.FileName = "cmd.exe";
 p.StartInfo.Arguments = " /c "tasklist.exe /fi "imagename eq AnyDesk.exe" /NH /FO CsV | findstr "Services""";
 p.StartInfo.UseShellExecute = false;
 p.StartInfo.RedirectStandardOutput = true;
 p.StartInfo.CreateNoWindow = true;
 p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding("CP866");
 p.Start();
 string output = p.StandardOutput.ReadToEnd();
 string[] pid1 = output.Split(',');//переводим ответ в массив
 pid1_ = pid1[1].Replace(""", "");//берем 2й элемент без кавычек
}

同樣,我們找到建立連結的服務,我只給主線

p.StartInfo.Arguments = "/c " netstat  -n -o | findstr /I " + pid1_ + " | findstr "ESTABLISHED""";

其結果將是:

以 AnyDesk 為例分析阻止透過網路進行遠端電腦控制的應用程式的可能性
從該行中,與上一步類似,提取第三列並刪除“:”之後的所有內容。 這樣,我們就得到了我們想要的IP。

2.2. Windows 中的 IP 封鎖。 如果 Linux 有 Blackhole 和 iptables,那麼在 Windows 中不使用防火牆,在一行中阻止 IP 位址的方法就很不尋常了,
但那裡有什麼樣的工具...

route add наш_найденный_IP_адрес mask 255.255.255.255 10.113.113.113 if 1 -p

關鍵參數》如果 1「將路由傳送到 Loopback(您可以透過執行路由列印來顯示可用的介面)。並且重要!現在需要啟動程式 具有管理員權限,因為改變路線需要海拔。

2.3. 顯示和保存已識別的 IP 位址是一項簡單的任務,不需要解釋。 如果你想了一下,你可以處理該文件 ad_svc.trace AnyDesk本身,但我沒有立即考慮它+也許它有一個限制。

2.4. 該程式奇怪的不均勻行為是,當在Windows 10中「taskkill」服務進程時,它會自動重新啟動,在Windows 8中它會結束,只留下控制台進程並且不會重新連接,通常這是不合邏輯的,這是不準確的。

刪除已連接到伺服器的進程可以讓您「強制」重新連接到下一個位址。 它的實作方式與前面的命令相同,所以我只給它:

p.StartInfo.Arguments = "/c taskkill /PID " + pid1_ + " /F";

此外,啟動 AnyDesk 程式。

 //запускаем программу которая расположена по пути path_pro
if (File.Exists(path_pro)){ 
Process p1 = Process.Start(path_pro);}

2.5. 我們將每分鐘檢查一次 AnyDesk 的狀態(或更頻繁?),以及它是否已連接,即連接已建立 - 阻止該 IP,然後再一遍 - 等待它連接,阻止並等待。

3. 攻擊

代碼被“草擬”出來,並決定將過程可視化“+“ 表示找到並封鎖的 IP,並且 “."—在 AnyDesk 的鄰居連線未成功的情況下重複檢查。

以 AnyDesk 為例分析阻止透過網路進行遠端電腦控制的應用程式的可能性

專案程式碼

因此…

以 AnyDesk 為例分析阻止透過網路進行遠端電腦控制的應用程式的可能性
該程式在裝有不同 Windows 作業系統(AnyDesk 5 和 6 版本)的多台電腦上運行。迭代超過 500 次,收集了大約 80 個位址。 2500 - 87 等等...

隨著時間的推移,被屏蔽的IP數量達到了100+。

最終連結 文字檔案 與地址: 時間 и

完成了! IP 位址池透過腳本加入到主路由器的規則中,AnyDesk 根本無法建立外部連線。

有一個奇怪的地方,從最初的日誌中可以明顯看出該地址涉及訊息傳輸 boot-01.net.anydesk.com。 當然,作為一般規則,我們阻止了所有 *.net.anydesk.com 主機,但這並不奇怪。 每次從不同的電腦正常 ping 時,該網域都會給予不同的 IP。 在 Linux 上檢查:

host boot-01.net.anydesk.com

與 DNSLookup 一樣,它們只提供一個 IP 位址,但該位址是可變的。 分析 TCPView 連線時,我們會傳回以下類型的 IP 位址的 PTR 記錄 中繼-*.net.anydesk.com.

理論上:因為 ping 有時會到達未知的未阻止主機 boot-01.net.anydesk.com 我們可以找到這些ip並阻止它們,使這個實作成為Linux作業系統下的常規腳本,這裡不需要安裝AnyDesk。 分析顯示,這些IP往往“相交「從我們的清單中找到的內容。也許程式在開始「整理」已知 IP 之前連接的只是該主機。稍後我可能會用主機搜尋的第二部分來補充本文,儘管目前程式本身一般不安裝內部網路外連接。

我希望您沒有看到上面的任何非法內容,AnyDesk 的創建者將以運動員的方式對待我的行為。

來源: www.habr.com

添加評論