Для начала скачаем с официального сайта. На данный момент это 11 версия.
Исследование установщика
Запускаем Process Monitor, знакомый нам из , открываем фильтр и выбираем критерии фильтрации:
Изучаем лог и понимаем как устанавливается программа, можно выделить следующие этапы:
Внутри находим файлы: “TeamViewer_.exe”, “System.dll” и “TvGetVersion.dll”. Распакуем первый:
И он тоже распаковался! Здесь и далее даётся листинг команды dir -R
В “./$PLUGINSDIR” файлы NSIS, а вот “*.7z” это сам TeamViewer, например tvfiles.7z:
tvfilesx86.7z – файлы VPN:
Попробуем запустить TeamViewer.exe и он работает! У нас получился portable TeamViewer. В дальнейшем мы будем работать только с содержимым tvfiles.7z
Подмена DLL
Скрывать окно TeamViewer мы будем подменой DLL, по научному DLL hijacking.
Получаем список файлов которые не смог открыть TeamViewer.exe, нас интересуют DLL’ки.
В этом списке не все библиотеки используются при импорте, так как мы отфильтровали функцию открытия файла. Нужно убедиться, что DLL подгружается в процесс TeamViewer, для этого достаточно создать пустой файлик с именем из лога в директории запуска TeamViewer.exe.
Мне понравилась TeamViewer_Resource_tr.dll
Version.dll – тоже хорошее название, создаём пустой файл с этим именем. Запуск, и программа выдаёт ошибку. Вакантная уязвимость обнаружена! Пробуем запустить TeamViewer_Desktop.exe и получаем аналогичную ошибку. То что нам нужно!
Хочу заметить что на Windows XP x64 – Version.dll не грузится из текущего каталога, и для неё была подобрана уязвимая UxTheme.dll
Заключение
Мы выдрали переносимую версию TV из инсталлятора и нашли интересующую нас уязвимость. В следующей части мы немного покодим =)
Исследование установщика
Запускаем Process Monitor, знакомый нам из , открываем фильтр и выбираем критерии фильтрации:
- Process Name – Team
- Operation – CreateFile

Изучаем лог и понимаем как устанавливается программа, можно выделить следующие этапы:
- распаковка в %TEMP%\TeamViewer\ и запуск TeamViewer_.exe
- создание каталога в программных файлах и сохранение туда 7z архивов C:\Program Files (x86)\TeamViewer\TVExtractTemp\tvfiles.7z
- распаковка архивов 7z в C:\Program Files (x86)\TeamViewer\
Внутри находим файлы: “TeamViewer_.exe”, “System.dll” и “TvGetVersion.dll”. Распакуем первый:
Код:
.:
$PLUGINSDIR tvfiles.7z tvfilesx64.7z tvfilesx86.7z
./$PLUGINSDIR:
advanced_unicode.ini LangDLL.dll start_unicode.ini
Base64.dll linker.dll StartMenu.dll
dialogsEx.dll Lizenz_TeamViewer_DE_unicode.txt System.dll
FindProcDLL.dll Lizenz_TeamViewer_EN_unicode.txt TvGetVersion.dll
InstallOptions.dll modern-wizard.bmp UAC.dll
InvokeShellVerb.dll nsArray.dll UserInfo.dll
ioSpecial.ini nsExec.dll wincheck.ini
KillProcDLL.dll nsis7z.dll
В “./$PLUGINSDIR” файлы NSIS, а вот “*.7z” это сам TeamViewer, например tvfiles.7z:
Код:
.:
CopyRights_DE.txt TeamViewer_Desktop.exe tv_w32.dll
CopyRights_EN.txt TeamViewer_Resource_en.dll tv_w32.exe
Lizenz_TeamViewer_DE_unicode.txt TeamViewer_Resource_ru.dll tv_x64.dll
Lizenz_TeamViewer_EN_unicode.txt TeamViewer_Service.exe tv_x64.exe
outlook TeamViewer_StaticRes.dll uninstall.exe
TeamViewer.exe TeamViewer11.otf
./outlook:
ManagedAggregator.dll TeamViewerMeetingAddinShim.dll
TeamViewerMeetingAddIn.dll TeamViewerMeetingAddinShim64.dll
Код:
.:
w2k x86
./w2k:
TeamViewerVPN.inf teamviewervpn.sy_
./x86:
teamviewer.gpd TeamViewerVPN.inf TVMonitor.sy_ TVPSPrint.inf
teamviewer.ppd teamviewervpn.sy_ tvprint.cat
Teamviewer_PrintProcessor.dll tvmonitor.cat TVPrint.inf
teamviewervpn.cat TVMonitor.inf tvpsprint.cat
Подмена DLL
Скрывать окно TeamViewer мы будем подменой DLL, по научному DLL hijacking.
Сначала нужно найти DLL которую мы будем подменять, для этого снова открываем Process Monitor и устанавливаем фильтр:Строго говоря, DLL hijacking является нормальным системным механизмом. Когда приложение просит систему загрузить dll, она ищет её по списку директорий, первой из которых является директория приложения.
- Process Name – contains – Team
- Operation – contains – CreateFile
- Result – contains – NOT FOUND

Получаем список файлов которые не смог открыть TeamViewer.exe, нас интересуют DLL’ки.
В этом списке не все библиотеки используются при импорте, так как мы отфильтровали функцию открытия файла. Нужно убедиться, что DLL подгружается в процесс TeamViewer, для этого достаточно создать пустой файлик с именем из лога в директории запуска TeamViewer.exe.
Переходим в наш распакованный tvfiles, и начинаем тестирование. Лучше выбирать DLL с неприметным названием и небольшим числом функций которые используются при импорте.Все тесты проводились на Windows 7 x64 и Windows XP x64, тестирование на других версиях приветствуется!
Если кто-то заметит, что DLL не подгружается на другой версии ОС или разрядности – пожалуйста отпишите в комментариях!
Мне понравилась TeamViewer_Resource_tr.dll
- создаём пустой файл в FAR – SHIFT+F4
- задаём имя “TeamViewer_Resource_tr.dll” и сохраняем по F2
Version.dll – тоже хорошее название, создаём пустой файл с этим именем. Запуск, и программа выдаёт ошибку. Вакантная уязвимость обнаружена! Пробуем запустить TeamViewer_Desktop.exe и получаем аналогичную ошибку. То что нам нужно!

Хочу заметить что на Windows XP x64 – Version.dll не грузится из текущего каталога, и для неё была подобрана уязвимая UxTheme.dll
Заключение
Мы выдрали переносимую версию TV из инсталлятора и нашли интересующую нас уязвимость. В следующей части мы немного покодим =)