beatcracker: (Leet Crew)
AmmyAdminСегодня я расскажу вам как с помощью ловкости рук и небольшого мошенства сделать ПО для удаленного администрирования и заработать на этом денег. Как известно, все тайное когда нибудь становится явным, и сегодня такой день настал для AmmyAdmin.

Относительно недавно, я грешным делом, считал, что более или менее знаю всех основных игроков на рынке удаленного администрирования. С их списком можно ознакомится в английской википедии и герой моего сегодняшнего рассказа там отсутствует (как впрочем и в русской). Однако, как выяснилось, AmmyAdmin ускользнул от моего внимания, поэтому я решил рассмотреть его поближе.

Как говорит официальный сайт:


Ammyy Admin - надежный и доступный способ оказания удаленной компьютерной помощи, администрирования и обучения для Ваших клиентов или сотрудников в любой точке земного шара. Без каких-либо установок, настроек или конфигураций программы, Ammyy Admin соединит удаленные компьютеры в течение нескольких секунд. Вы сможете управлять компьютерами своих клиентов, контролировать клавиатуру и мышь.


В сети существует несколько обзоров свежий, в блоге человека-пирожного и трехлетней давности на 3DNews.

Работает AmmyAdmin через свой сервер, что избавляет конечного пользователя от проблем с серым IP, проброса портов и прочих лишних телодвижений. По такому же принципу работает всем известный TeamViewer и большинство систем удаленного администрирования ориентированных на корпоративный сектор.

После запуска программы можно созерцать следующего вида окно

AmmyAdmin - главное окно

Казалось бы все вполне стандартно и логично, поэтому переходим на следующую вкладку - "Operator".

AmmyAdmin - окно подключения


С протоколом RDP все понятно, а вот Ammy Protocol меня заинтересовал. Не так просто написать хороший протокол передачи данных для подобного ПО и тем более не каждый разработчик озадачивается изобретением велосипедов. Обычно используется готовое решение, например LibVNCServer.

Посмотрим, что предлагает нам AmmyAdmin в настройках параметров передачи данных. Ничего не напоминает?

AmmyAdmin - окно настроек


Для примера, подобное окно в UltraVNC.

UltraVNC - окно настроек


Как видим, большинство опций совпадают, к чему бы это?

Имея давнюю привычку не верить никому на слово, заглядываю внутрь AmmyAdmin.exe

AmmyAdmin - дизассемблированный листинг


AmmyAdmin - дизассемблированный листинг

Как видим, автор страдает от излишней скромности, отчего умолчал, что для передачи данных используется код VNC, а судя по имени класса, как раз упомянутый выше LibVNCServer. Вот его исходный код для сравнения :


  1. static void
  2. rfbInitColourMapSingleTableOUT(char **table, rfbPixelFormat *in,
  3. rfbPixelFormat *out,rfbColourMap* colourMap)
  4. {
  5. uint32_t i, r, g, b;
  6. OUT_T *t;
  7. uint32_t nEntries = 1 << in->bitsPerPixel;
  8. int shift = colourMap->is16?16:8;
  9. if (*table) free(*table);
  10. *table = (char *)malloc(nEntries * sizeof(OUT_T));
  11. t = (OUT_T *)*table;
  12. for (i = 0; i < nEntries; i++) {
  13. r = g = b = 0;
  14. if(i < colourMap->count) {
  15. if(colourMap->is16) {
  16. r = colourMap->data.shorts[3*i+0];
  17. g = colourMap->data.shorts[3*i+1];
  18. b = colourMap->data.shorts[3*i+2];
  19. } else {
  20. r = colourMap->data.bytes[3*i+0];
  21. g = colourMap->data.bytes[3*i+1];
  22. b = colourMap->data.bytes[3*i+2];
  23. }
  24. }
  25. t[i] = ((((r * (1 + out->redMax)) >> shift) << out->redShift) |
  26. (((g * (1 + out->greenMax)) >> shift) << out->greenShift) |
  27. (((b * (1 + out->blueMax)) >> shift) << out->blueShift));


Принимая во внимание то, что LibVNCServer распространяется по лицензии GPL (равно как и исходный код RealVNC и многих ее форков), это выглядит как минимум некрасиво. Особенно учитывая, что AmmyAdmin - коммерческий продукт и бесплатно может использоваться не более 15 часов в месяц.

AmmyAdmin - цены


Однако поймать с поличным человека не соблюдающего GPL лицензию в своих личных интересах, слишком просто, поэтому копнем еще глубже. При внимательном изучении, обнаруживаем, что AmmyAdmin.exe имеет оверлей, в котором содержится zip-архив. Он даже не зашифрован, по видимому разработчик считал, что так далеко никто не полезет. И зря. Потому, что внутри этого архива находится файл SAS.exe.

Лирическое отступление:


В момент выпуска Microsoft операционной системы Windows Vista перед разработчиками подобного ПО
возникла серьезная проблема. В связи с усиленной политикой безопасности, код, который раньше использовался для вызова Secure Attention Sequence (она же Ctrl-Alt-Del) перестал работать. Единственным официальным решением было письмо на адрес saslib@microsoft.com с запросом нераспространяемой публично библитеки saslib, с единственной экспортируемой функцией внутри SimulateSAS(). Со временем стали появлятся и альтернативные решения, подробнее можно почитать например здесь.


В частности в UltraVNC реализация вызова SAS находилась в CAD.exe а в TeamViewer 3 и 4 версии - SAS.exe. Странное совпадение с названием файла извлеченного из AmmyAdmin. Или это не совпадение?

Сравним SAS.exe извлеченный из AmmyAdmin и SAS.exe из TeamViewer. Этот файл входил в дистрибутив TeamViewer 3 и 4 версии, благо все версии этого продукта можно скачать на официальном сайте. Начнем с версии 4 и бинго! Файлы практически идентичны, однако есть небольшие различия.
  • Изменен записываемый при компиляции путь к pdb-файлу с отладочной информацией. Чтоб никто не догадался! ©
Сравнение SAS.exe, путь к pdb-файлу
  • Изменена запись в таблице импорта указывающая на рантайм библиотеку С++. Зачем это сделано, не совсем понятно, скорее всего автор AmmyAdmin хотел добится работы на компютерах со старыми версиями рантайма. На практике это работает, но в продакшне такие грязные хаки не используют.
Сравнение SAS.exe, MSVCR80 против MSVCRT
  • Удален xml-манифест декларирующий нужную для исполнения версию описанной выше библиотеки.
Сравнение SAS.exe - удаленный манифест
  • Удален цифровой сертификат выданный Versign, которым TeamViewer подписывает свои исполняемые файлы и библиотеки.
Сравнение SAS.exe - удаленный сертификат

Вот так он выглядит в свойствах оригинального файла.

SAS.exe, сертификат TeamViewer


В остальных аспектах файлы абсолютны совпадают, не считая нескольких различий в PE-заголовке вызванных удалением сертификата и манифеста. Как говорил Картмен: "Щщщикарно!"

Не менее интересна и переписка на официальном форуме AmmyAdmin:



Ох, не зря волнуются пользователи.

Как видим, автор действительно не любит изобретать велосипеды и любит деньги. К сожалению, он выбрал не лучший способ для достижения своих целей. И если нарушение GPL лицензии практически ничем ему не грозит, то мне очень интересно, как отнесутся разработчики TeamViewer к такому использованию составной части их продукта в ПО конкурентов?
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

March 2021

M T W T F S S
1234567
891011121314
151617181920 21
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Monday, 5 January 2026 19:59
Powered by Dreamwidth Studios