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 к такому использованию составной части их продукта в ПО конкурентов?
From:
Anonymous
OpenID
Identity URL: 
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

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


 
Notice: This account is set to log the IP addresses of people who comment anonymously.
Links will be displayed as unclickable URLs to help prevent spam.

October 2017

M T W T F S S
      1
234 5 67 8
910 11 1213 1415
161718 19202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Monday, 23 October 2017 11:47
Powered by Dreamwidth Studios