以 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中“任务杀死”服务进程时,它会自动重新启动,在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 的创建者将以运动员的方式对待我的行为。

来源: habr.com

添加评论