注意:在2020年3月11日,Avast宣布他们已决定在全球范围内禁用该口译员!
主要的Avast防病毒过程称为Avastsvc.exe,它以系统运行。

该服务加载了低级防病毒引擎,并分析了从文件系统微型或截距网络流量等来源收到的不信任数据。
尽管具有高度的特权,并且按设计进行了不受信任的输入,但它是未包装的,缓解范围较差。此过程中的任何漏洞都是至关重要的,远程攻击者易于访问。
所以..也许不太好,它包括一个自定义的JavaScript解释器.... ???? ?

该存储库包含一个交互式外壳,可让您在Linux上测试漏洞研究的解释器。
这是尝试一下的方法,首先安装依赖项。
$ sudo apt install libreadline-dev:i386 libc6-dev-i386 gcc-multilib
$ sudo yum install readline-devel.i686 glibc-devel.i686 libgcc.i686
现在您可以克隆此存储库。
$ git clone https://github.com/taviso/avscript.git
$ cd avscript
$ git submodule update --init --recursive
如果一切看起来都不错,请构建它,并且应该准备avscript 。
$ make
出于绩效原因,Avast不会解释遇到的每个JavaScript文件,而是使用启发式方法来确定是否有必要。我发现附加此存储库中包含的文件javascript.txt足以始终触发启发式。
例如,如果您找到了一个漏洞并想在Windows上复制它,则首先要这样做:
$ cat yourtestcase.js javascript.txt > ReproForWindows.js
现在验证它仍然可以执行您的期望,例如
$ ./avscript ReproForWindows.js
main(): File ReproForWindows.js` loaded, about to initialize interpreter...
Segmentation fault (core dumped)
然后验证窗口上复制的崩溃。
Avast服务是一个受保护的过程,这意味着从用户空间调试它非常棘手。如果您配置了KD,则可以简单地撤消此功能,然后在用户空间中调试正常工作。
在32位上使用的快速简便的解决方案是这样做(请注意,PatchGuard在X64上不允许使用此操作,但是您可以使用Breakpoint命令进行类似的操作)。

在“故障排除”下,也有一个称为“启用自卫”的设置,该设置应被禁用。我相信此设置会在SSDT中禁用挂接OpenProcess() ,在那里他们通常将自己的流程列入黑名单。
附加时,您可能需要在Avast UI中暂时禁用“盾牌”,以便在服务被暂停时文件系统操作不会死锁。
Avast不会为其引擎发布任何符号,但是与IDA或GDB进行调试仍然是可能的。负载文档中的Linux从Linux调试Windows代码有一些注释。
如果您想使用IDA,我建议使用gdbserver Backend。
只需使用类似的内容,您可能需要首先安装GDBSERVER软件包:
$ gdbserver 0.0.0.0:23946 ./avscript
这是出乎意料的,即使是伪代码断点也可以。

如果您发现脆弱性,它可能是至关重要的且令人不地之间的。
请紧急报告。