注意:在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
這是出乎意料的,即使是偽代碼斷點也可以。

如果您發現脆弱性,它可能是至關重要的且令人不地之間的。
請緊急報告。