on September 29, 2019, John Page reported a remote code
execution
with escalation of privilege in TrendMicro's Anti-Threat
Toolkit
to its vendor.
TrendMicro assigned CVE-2019-9491 to this vulnerability and
told
the reporter, his dog and the world on October 18, 2019, that
they
had fixed the vulnerable product.
See
<https://success.trendmicro.com/solution/000149878>,
<https://seclists.org/fulldisclosure/2019/Oct/42> and
<http://hyp3rlinx.altervista.org/advisories/TREND-MICRO-ANTI-THREAT-TOOLKIT-(ATTK)-REMOTE-CODE-EXECUTION.txt>
TrendMicro's claim was but wrong, the vulnerability was NOT FIXED!
The files attk_ScanCleanOffline_gui_x86.exe,
attk_collector_cli_x86.exe,
attk_ScanCleanOffline_gui_x64.exe and
attk_collector_cli_x64.exe
offered on <https://spnsupport.trendmicro.com/> were STILL
vulnerable,
as was their payload!
Vulnerability #1:
~~~~~~~~~~~~~~~~~
On a fully patched Windows 7 SP1, the executable
self-extractors
attk_ScanCleanOffline_gui_x86.exe, attk_collector_cli_x86.exe,
attk_ScanCleanOffline_gui_x64.exe and
attk_collector_cli_x64.exe
loaded and executed at least the following DLLs from their
"application directory", typically the user's "Downloads"
folder
%USERPROFILE%\Downloads\, instead from Windows' "system
directory"
%SystemRoot%\System32\
VERSION.dll, IPHLPAPI.dll, WINNSI.dll, WINHTTP.dll, WEBIO.dll,
DHCPCSVC.dll, CRYPTSP.dll, BCRYPT.dll, NCRYPT.dll, DNSAPI.dll,
RASADHLP.dll, PROPSYS.dll, APPHELP.dll
On other versions of Windows this list varied, but some DLLs
were
ALWAYS loaded from the "application directory"!
This BEGINNER's error is well-known and well-documented since
MORE
than 20 years:
see <https://capec.mitre.org/data/definitions/471.html>,
<https://cwe.mitre.org/data/definitions/426.html>,
<https://cwe.mitre.org/data/definitions/427.html>,
<https://blogs.msdn.microsoft.com/david_leblanc/2008/02/20/dll-preloading-attacks/>,
<https://insights.sei.cmu.edu/cert/2008/09/carpet-bombing-and-directory-poisoning.html>,
<http://www.binaryplanting.com/index.htm>,
<https://attack.mitre.org/wiki/Technique/T1073>,
<https://skanthak.homepage.t-online.de/sentinel.html>,
<https://skanthak.homepage.t-online.de/verifier.html>,
<https://skanthak.homepage.t-online.de/!execute.html>,
<https://skanthak.homepage.t-online.de/minesweeper.html>
Demonstration/Proof of concept:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Follow
<https://skanthak.homepage.t-online.de/minesweeper.html>,
build a "minefield" of forwarder DLLs, then copy attk_*.exe
into
the directory where you built the DLLs and execute it: enjoy
the
multiple message boxes displayed from the forwarder DLLs.
Vulnerability #2:
~~~~~~~~~~~~~~~~~
On all versions of Windows, the batch script
batCollector.bat,
unpacked from the executable extractors, which controls
execution
of the TrendMicro AntiThreat Toolkit itself, executed
findstr.com/findstr.exe/findstr.bat/findstr.cmd
plus
REG.com/REG.exe/REG.bat/REG.cmd
(see the environment variable PATHEXT for the extensions) from
the directory
"TrendMicro AntiThreat Toolkit\HC_ATTK"
where the batch script batCollector.bat lives:
--- batCollector.bat ---
| @echo off
| setlocal disableDelayedExpansion
| set wd=%~dp0
| cd /d %wd%
...
| for /f "tokens=*" %%a in ('findstr BatCollector=
..\..\config.ini') do (
...
| REG EXPORT ...
...
findstr and REG are called in the script without file extension
and
without path (although BOTH are well-known), so CMD.exe runs
findstr.com/findstr.exe/findstr.bat/findstr.cmd and
REG.com/REG.exe/REG.bat/REG.cmd from its "current working
directory"
"TrendMicro AntiThreat Toolkit\HC_ATTK"
The missing path and extension are BEGINNER'S error #2.
Again see
<https://cwe.mitre.org/data/definitions/426.html>,
<https://cwe.mitre.org/data/definitions/427.html>
and <https://capec.mitre.org/data/definitions/471.html>
Vulnerability #3:
~~~~~~~~~~~~~~~~~
The executable self-extractors fail to restrict (at least
write)
access to this directory for UNPRIVILEGED users, i.e. allow
write
access only for members of the "Administrators" group: this is
BEGINNER'S error #3.
In standard installations of Windows, where the
qUACkery-controlled
user account created during setup is used, this UNPROTECTED
directory
is therefore writable by the UNPRIVILEGED user who can place a
rogue
findstr.com/findstr.exe/findstr.bat/findstr.cmd and
REG.com/REG.exe/REG.bat/REG.cmd there ... and gains
administrative
privileges!
Additionally an UNPRIVILEGED attacker can add arbitrary
command
lines to the UNPROTECTED batch script batCollector.bat between
its
creation and its execution, or replace it completely.
Again see
<https://cwe.mitre.org/data/definitions/426.html>,
<https://cwe.mitre.org/data/definitions/427.html>
and <https://capec.mitre.org/data/definitions/471.html>,
plus <https://cwe.mitre.org/data/definitions/732.html>,
<https://cwe.mitre.org/data/definitions/377.html>,
<https://cwe.mitre.org/data/definitions/379.html>
and <https://capec.mitre.org/data/definitions/29.html>
stay tuned, and FAR AWAY from so-called security products:
their "security" is typically worse than that of the products
they claim to protect!
Stefan Kanthak
PS: the TrendMicro Anti-Threat Toolkit inspected in October
2019
was built from scrap: the developers used VisualStudio 2008
(end-of-life since two years), linked against an outdated and
vulnerable LIBCMT, shipped an outdated and vulnerable cURL 7.48
plus an outdated and vulnerable libeay32.dll 1.0.1.17 (OpenSSL
1.0.1 is end-of-life since more than 3 years; the last version
was 1.0.1.20).
This POOR (really: TOTAL lack of proper) software engineering
alone disqualifies this vendor and its "security" products!
JFTR: "they'll never come back" (really: developers SELDOM
learn)
<https://seclists.org/fulldisclosure/2010/Sep/332>
<https://seclists.org/fulldisclosure/2015/Dec/128>
Timeline:
~~~~~~~~~
2019-10-23 sent reports for both vulnerabilities to vendor
2019-10-25 vendor acknowledged receipt
2020-01-07 CVE-2019-20358 assigned by vendor
2020-01-29 updated advisory published by vendor

