POC-плугин для MRA
Итак. Собственно. Речь об агенте, mail.ru agent, MRA, MRIM или просто о простом и негодном интернет-мессенджере так любимом офисными хомячками и прочим планктоном. Ну а раз любимом и раз таким контингентом, сталобыть данная фича (ну не баг же) может быть легко проэксплуатируема и быть может кому-то принесет в карман вкусный шекель. Вообщем, как знать.
Вкратце. Протоколом сам я заинтересовался недавно, некоторые базовые возможности описаны, некоторые из описанных уже изменились, протокол передачи файлов документирован и ни от кого не скрыт(даже в сниффере все довольно прозрачно). Возможно передавать несколько файлов за один заход в порядке очереди, что будет очень на руку, почему – далее.
Думаю приводить копипасту описания протокола смысла не много, кому надо – подробнее здесь http://agent.mail.ru/ru/developers/protocol.html, заострю внимание лишь на моментах, которые используются в POC. Это библиотека, экспортирующая никому не нужную функцию и в дллмайне создающая тред. Тред ставит хоткей Alt+H и начинает прием сообщений потоку. При получении сообщения о нажатии именно этих клавиш вызывается диалоговое окно, в эдит-контроле которого следует прописать новый путь (примерное содержание оного указано). Длина имени передаваемого файла должна быть такой же или более, длины вписываемого нового пути (без \N). Далее если все прошло успешно появится окно об установленном перехвате на функцию send!ws2_32.dll и начинается парсинг пакетов на пригодность к патчингу оных. При повторном нажатии горячих клавиш перехват снимается.
Смысл в том, что при передаче имен они никак не изменяются, а просто дописываются к пути сохранения файлов по умолчанию. Подав функции CreateFileW путь "C:\Windows\..\Program Files\lol.txt" мы запишем данный файл папку Program Files диска С: с учетом что папка программных файлов там существует, \..\ можно ставить сколько угодно, дальше корневого каталога уйти не удастся и ошибки не возникнет.
Всего, что нужно было это добавить проверку на наличие в имени файла негодных символов. Это не было сделано, результат такой: возможность заменять файлы не занятые другими программами без вывода предупреждения о существовании файлов, создавать файлы по заранее предполагаемо существующим путям (с учетом того, что практически никто не меняет дефолтный путь, он является вложенным в "мои документы", кои у 95% населения находятся в системном разделе, сталобыть пути становятся немного предсказумыми), после загрузки файла агент предоставляет ссылку на открытие папки с принятыми папками. При передаче двух и более файлов по данной ссылке открывается папка по дефолту и куда залит был один из файлов может остаться неизвестным для многих людей не обремененных интеллектом и вниманием. Путь этот, конечно же виден принимающему, пример:
----------------------------------------------------------------------------------
Передача файлов (23:59) :
Ваш собеседник предложил вам получить файлы.
\..\..\..\..\..\..\..\..\autorun.inf (110 Байт)
The Bat!.LNK (2 КБ)
Mozilla Firefox.lnk (2 КБ)
ImgBurn.lnk (608 Байт)
Miranda IM HotCoffee Mod.lnk (695 Байт)
base64.exe (3 КБ)
Mail.Ru Агент.lnk (2 КБ)
Общий размер: 9 КБ
Принять Сохранить как... Отказаться
----------------------------------------------------------------------------------
..но это же не страшно, правда, когда передаешь штук 10 фотографий и одна у одной из них имя \..\..\..\..\..\..\..\..\Program Files\Mail.Ru\Agent\PSAPI.dll ? Скорее всего это просто агент глючит, что еще ждать от мейл.ру? А тем не менее, являясь довольно популярным мессенджером, ошибок в нем ну не то что бы не нарыто, но, прямо скажем, они не страшные, их мало, и хз каких времен. Опять же не приват, разумеется.
По данному багу – скорее всего просто пропатчат серверную часть для парсинга строк в пакетах MRIM_CS_FILE_TRANSFER.
Собственно все, а вы хотели сплоетов? Так их у меня нету.
публикую с разрешения автора, автор TrashGen, trashgen@jabber.ru
пасс к архиву, MRAbug
Итак. Собственно. Речь об агенте, mail.ru agent, MRA, MRIM или просто о простом и негодном интернет-мессенджере так любимом офисными хомячками и прочим планктоном. Ну а раз любимом и раз таким контингентом, сталобыть данная фича (ну не баг же) может быть легко проэксплуатируема и быть может кому-то принесет в карман вкусный шекель. Вообщем, как знать.
Вкратце. Протоколом сам я заинтересовался недавно, некоторые базовые возможности описаны, некоторые из описанных уже изменились, протокол передачи файлов документирован и ни от кого не скрыт(даже в сниффере все довольно прозрачно). Возможно передавать несколько файлов за один заход в порядке очереди, что будет очень на руку, почему – далее.
Думаю приводить копипасту описания протокола смысла не много, кому надо – подробнее здесь http://agent.mail.ru/ru/developers/protocol.html, заострю внимание лишь на моментах, которые используются в POC. Это библиотека, экспортирующая никому не нужную функцию и в дллмайне создающая тред. Тред ставит хоткей Alt+H и начинает прием сообщений потоку. При получении сообщения о нажатии именно этих клавиш вызывается диалоговое окно, в эдит-контроле которого следует прописать новый путь (примерное содержание оного указано). Длина имени передаваемого файла должна быть такой же или более, длины вписываемого нового пути (без \N). Далее если все прошло успешно появится окно об установленном перехвате на функцию send!ws2_32.dll и начинается парсинг пакетов на пригодность к патчингу оных. При повторном нажатии горячих клавиш перехват снимается.
Смысл в том, что при передаче имен они никак не изменяются, а просто дописываются к пути сохранения файлов по умолчанию. Подав функции CreateFileW путь "C:\Windows\..\Program Files\lol.txt" мы запишем данный файл папку Program Files диска С: с учетом что папка программных файлов там существует, \..\ можно ставить сколько угодно, дальше корневого каталога уйти не удастся и ошибки не возникнет.
Всего, что нужно было это добавить проверку на наличие в имени файла негодных символов. Это не было сделано, результат такой: возможность заменять файлы не занятые другими программами без вывода предупреждения о существовании файлов, создавать файлы по заранее предполагаемо существующим путям (с учетом того, что практически никто не меняет дефолтный путь, он является вложенным в "мои документы", кои у 95% населения находятся в системном разделе, сталобыть пути становятся немного предсказумыми), после загрузки файла агент предоставляет ссылку на открытие папки с принятыми папками. При передаче двух и более файлов по данной ссылке открывается папка по дефолту и куда залит был один из файлов может остаться неизвестным для многих людей не обремененных интеллектом и вниманием. Путь этот, конечно же виден принимающему, пример:
----------------------------------------------------------------------------------
Передача файлов (23:59) :
Ваш собеседник предложил вам получить файлы.
\..\..\..\..\..\..\..\..\autorun.inf (110 Байт)
The Bat!.LNK (2 КБ)
Mozilla Firefox.lnk (2 КБ)
ImgBurn.lnk (608 Байт)
Miranda IM HotCoffee Mod.lnk (695 Байт)
base64.exe (3 КБ)
Mail.Ru Агент.lnk (2 КБ)
Общий размер: 9 КБ
Принять Сохранить как... Отказаться
----------------------------------------------------------------------------------
..но это же не страшно, правда, когда передаешь штук 10 фотографий и одна у одной из них имя \..\..\..\..\..\..\..\..\Program Files\Mail.Ru\Agent\PSAPI.dll ? Скорее всего это просто агент глючит, что еще ждать от мейл.ру? А тем не менее, являясь довольно популярным мессенджером, ошибок в нем ну не то что бы не нарыто, но, прямо скажем, они не страшные, их мало, и хз каких времен. Опять же не приват, разумеется.
По данному багу – скорее всего просто пропатчат серверную часть для парсинга строк в пакетах MRIM_CS_FILE_TRANSFER.
Собственно все, а вы хотели сплоетов? Так их у меня нету.
публикую с разрешения автора, автор TrashGen, trashgen@jabber.ru
пасс к архиву, MRAbug