Статья Как создать свой onion-сайт в сети TOR с помощью Kali Linux

Создадим свой onion-сайт в сети TOR, расположенный на вашей Kali Linux, а не каком нибудь хостинге. Только доступен он будет, когда вы его запустите. Если хотим сгенерировать красивый адрес для сайта, то переходим к первому пункту, а если нет, то сразу ко второму.

28473

1. Нам понадобится СТАРАЯ версия Kali Linux! Я использовал 1.0.6

На новых не заработало. Можно найти в архивах. Нарезаем на болванку/делаем live-usb. Прогружаемся в систему. Подключаемся к сети. Далее в ход пойдет Shallot.

Shallot позволяет создавать настроенные адреса .onion для скрытых сервисов Tor. Часть адреса может быть произвольной. Установка:
Загрузим Shallot с github
Код:
wget https://github.com/katmagic/Shallot/archive/master.zip
Распакуем
Код:
unzip master.zip
Перейдем в директорию
Код:
cd Shallot-master
Далее
Код:
./configure
make
И запускаем для примера
Код:
./shallot ^penis
------------------------------------------------------------------
Found matching domain after 30493976 tries: penistfobso4wxhr.onion
------------------------------------------------------------------
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQC+dO6h1GjQD0Hqn2LLBX0kIA9px/CtxV5yxMCjbk773igLvXDu
v7N9Kr1FYB+yKuSWL/aCZttLqiqUA4L3cxI5Dgtk3bRKkmZre9qfH9xU9v+RSr5P
BQmtp0AMi2wLiZxGggkoqcdIhKC4WWoD1xks0H//f7D+G+rdh4IMOHj7kQIEAPC0
RQKBgAwEVw9kxxu/SIugn3dDXJ2tq8V/uGNMBm02MnhckgvIS6S9wfB60mjy3FG/
SUPCWE/f5pUx8fNb3aPnIg2C5FlSE8hAfzdVBIP5F3S2KacSeCL+DPgCpcM8Tkfh
s5AaqHe5Z+cb2pLE/1VXQpnnSQhLuSQFresIMCxnaBjOizzJAkEA4laycqQo2Guu
eGkppcdNDRnlI4+bCslp2C4ZOuv8/DaLsQ/UE+RMrhdmJi48bcGBafcQlfewdyvL
FpF6cpzjtQJBANdqdFilmRwCi1Ij4Q3dBubjjo5+WzxeZ0A6M6g5HDPFZBuHoXtI
LNbSz5ilriQQ8fhKZi1HpwVWhNNLyIB3me0CQCdn1d98SwNP+gIfyvYT5ufxoBfH
ElngrkQr4rYhsbCmSorxfen9gxI1hQVy4DsbTfttzSwJmOZ5P/CBG+HPFjUCQQCB
gWh+P0wOCUDfkRDXdVd1Tb/7nbPbk8r+VlVgnz7fMNPYzjVkq2DTsRvk8uWTdMwQ
bTDrrSiO0Wv5zxmMocT9AkEAkLfNSgZafRVmipGo9Fn78ZqedvZAqfYkwXgoIfrB
MEq+FK1D3nyY9QDukbe6uR7k8gTfqTtqiHwIQ5JX7u6v7w==
-----END RSA PRIVATE KEY-----
Замените "член" именем, которое хотите. Стоит помнить, что чем больше символов вы введете, тем тольше времени уйдет на генерацию. Оптимально не более 6. Полученный вывод сохраните в текстовый файл и пока сохраните на внешний носитель.

2. Лучше всего, если ваша Kali будет на зашифрованном диске.Об этом подробно написано на форуме.
Плюсы очевидны. Ладно. Вы в системе. В терминале вводим по порядку:
Код:
apt-get install tor
apt-get install lighttpd
далее стартуем tor и lighttpd:
Код:
service tor start
service lighttpd start
чтобы они создали конфигурации. В /etc/tor/torrc раскомментируем и приведем к такому виду строки:
Код:
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:8080
и в самом низу добавим это:
Код:
ExcludeNodes {ru}, {ua}, {be}
Устранит подключения вашего Tor к *** нодам. Сохраним и выйдем.

В /var/lib/tor/hidden_service есть два файла hostname и private_key
В первом имя вашего onion сайта, а во втором - уникальный приватный ключ. Если вы выполняли пункт 1, то у вас должен остаться полученный вывод в текстовом файле. Вот из него то и подставьте значения в эти два файла. Если перешли сразу ко второму пункту, то оставьте так. Для примера в hostname впишите penistfobso4wxhr.onion а в private_key:
Код:
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQC+dO6h1GjQD0Hqn2LLBX0kIA9px/CtxV5yxMCjbk773igLvXDu
v7N9Kr1FYB+yKuSWL/aCZttLqiqUA4L3cxI5Dgtk3bRKkmZre9qfH9xU9v+RSr5P
BQmtp0AMi2wLiZxGggkoqcdIhKC4WWoD1xks0H//f7D+G+rdh4IMOHj7kQIEAPC0
RQKBgAwEVw9kxxu/SIugn3dDXJ2tq8V/uGNMBm02MnhckgvIS6S9wfB60mjy3FG/
SUPCWE/f5pUx8fNb3aPnIg2C5FlSE8hAfzdVBIP5F3S2KacSeCL+DPgCpcM8Tkfh
s5AaqHe5Z+cb2pLE/1VXQpnnSQhLuSQFresIMCxnaBjOizzJAkEA4laycqQo2Guu
eGkppcdNDRnlI4+bCslp2C4ZOuv8/DaLsQ/UE+RMrhdmJi48bcGBafcQlfewdyvL
FpF6cpzjtQJBANdqdFilmRwCi1Ij4Q3dBubjjo5+WzxeZ0A6M6g5HDPFZBuHoXtI
LNbSz5ilriQQ8fhKZi1HpwVWhNNLyIB3me0CQCdn1d98SwNP+gIfyvYT5ufxoBfH
ElngrkQr4rYhsbCmSorxfen9gxI1hQVy4DsbTfttzSwJmOZ5P/CBG+HPFjUCQQCB
gWh+P0wOCUDfkRDXdVd1Tb/7nbPbk8r+VlVgnz7fMNPYzjVkq2DTsRvk8uWTdMwQ
bTDrrSiO0Wv5zxmMocT9AkEAkLfNSgZafRVmipGo9Fn78ZqedvZAqfYkwXgoIfrB
MEq+FK1D3nyY9QDukbe6uR7k8gTfqTtqiHwIQ5JX7u6v7w==
-----END RSA PRIVATE KEY-----
В /etc/lighttpd/lighttpd.conf изменим значения:
Код:
server.document-root  = "/var/www/onion"
server.error-handler-404  = "/404.php"
server.tag  = "Ваше значение"
server.port  = 8080
$HTTP["remoteip"] !~ "127.0.0.1" {
url.access-deny  = ( "" )
}
server.dir-listing  = "disable"
3. Современные веб-технологии предусматривают широкое использование "движков", для поддержки которых требуются PHP и MySQL, поэтому самое время добавить их к нашему серверу. Сначала установим PHP:
Код:
apt-get install php7.0-cgi
Затем в /etc/php/7.0/cgi/php.ini найдем и раскомментируем следующую строку:
Код:
cgi.fix_pathinfo = 1
Теперь включим поддержку PHP в lighttpd:
Код:
lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-php
4. Следующим шагом установим сервер баз данных MySQL и модуль PHP для работы с ним (Можете пропустить, если сайт будет без БД):
Код:
apt-get install mysql-server php7.0-mysql
По умолчанию MySQL сервер использует кодировку latin1, в то время как большинство современных движков работают в UTF-8. Поэтому откроем /etc/mysql/my.cnf и добавим в секции [client] и [mysqld] следующие строки:
Код:
[client]
default-character-set=utf8

[mysqld]
character_set_server=utf8
collation_server=utf8_unicode_ci
Об управлении БД в mysql я рассказывать не буду. Это отдельная тема, которую нет смысла тут упоминать.

5. В /var/www/ создаем папку onion (не забудьте установить права 777). Ваш сайт разместим в ней. Создаем проверочную HTML страницу и сохраняем ее под именем index.html :
Код:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Тестовая страница</title>
</head>
<body>
<h2>Site Local </h2>
<h3> Тестовая страница.</h3>
<p> Веб-сервер работает и настроен правильно. </p>
</body>
Создаем PHP страницу ошибки и сохраняем ее под именем 404.php :
Код:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>404</title>
</head>
<body>
<h2>Site Local </h2>
<h3> Ошибка 404.</h3>
<p> Страница не найдена. </p>
</body>
Перезапустим службы:
Код:
service tor restart
service lighttpd restart
service mysql  restart
6. В tor-браузере переходим на ВАШ сгенерированный onion адрес, например penistfobso4wxhr.onion и видим результат!
Желательно добавить в /root/***/tor-browser_en-US/Browser/TorBrowser/Data/Tor/torrc в самый низ строку ExcludeNodes {ru}, {ua}, {be}
Теперь, чтобы запустить сайт, достаточно вводить в терминале:
Код:
service tor start
service lighttpd start
service mysql  start
Установим tor-arm - удобную утилиту для управления и контроля трафика Tor :
Код:
apt-get install arm
Запускается просто. В терминале ввести arm и следить за трафиком.

P. S. От себя замечу, что можно использовать тяжелые движки для сайта, но я бы порекомендовал opensource:
  • flatpress - блог без БД
  • lechat - чат с БД
  • fluxbb - форум с БД
Можно найти в интернете в открытом виде на том же github

Все это можно реализовать на Raspberry Pi, тогда сайт будет всегда доступен.

Спасибо за внимание.
 

Вложения

Хорошая статья.

link removed Здесь достаточно подробно описана процедура для Kali-linux-2.0 , я проверял-работает, единственное, нет возможности выбрать имя.
 
  • Нравится
Реакции: ghost
С помощью Shallot теперь есть! :-) Да и Apache ведь для других дел в Kali нужнее. Лучше Lighttpd использовать...

И кстати. Совсем забыл. Если вам нужно разрешить скачивать с вашего сайта файлы, то нужно:

1. В /var/www/onion создаем какую нибудь папку, к примеру downloads и в нее ложим необходимые файлы.

2. Изменяем права на чтение и скачивание на папку /var/www/onion/downloads и все вложенные в нее файлы.
(Щелкаем правой кнопкой мыши на ней и выбираем свойства/права. А далее:
Владелец - debian-tor, доступ - создание и удаление файлов
Группа - debian-tor, доступ - доступ к файлам
Остальные - доступ к файлам
Изменить права на вложенные файлы
После добавления новых файлов каждый раз повторяем операцию. Но можно все проделать проще и через терминал.)

3. В /etc/lighttpd/lighttpd.conf изменим значение:

server.dir-listing = "disable"

на

server.dir-listing = "enable"

PROFIT!

Если у вас статические html-файлы с сайтом (идеальный вариант для безопасности) и не очень много ресурсов, то можно просто запустить однострочник на Python, который будет отдавать пользователю контент. А не использовать Lighttpd. Для этого перейдите в каталог с html-файлами и запустите следующую команду:

Код:
$ cd /var/www/site1
$ python -m SimpleHTTPServer 80

Можно параллельно запустить несколько сайтов, поменяв лишь каталог назначения и порт. Например:

Код:
$ cd /var/www/site2
$ python -m SimpleHTTPServer 81

Порт естественно смените на другой, например 8123.

Как отдать файл через Tor?
Если в /var/www/site1 создать папку, например new и положить в нее какой нибудь файл, то посетитель вашего сайта перейдя по адресу вашсайт.onion/new сможет скачать этот файл.

Вопрос для знающих. Как в этом однострочнике сменить дефолтную error404 страницу?
 
Последнее редактирование модератором:
Очень впечатлило, так как весьма полезно, благодарю ТС за статью!!!
 
  • Нравится
Реакции: ghost
Очень впечатлило, так как весьма полезно, благодарю ТС за статью!!!
Пожалуйста. Конечно полезно. Даже передать какой то файл если нужно анонимно. Все настраивается за пару минут... Вот только если хотите красивый домен, то прийдется использовать Shallot и подождать. Время генерации .onion адреса на 1.5Ghz процессоре:

символы/время генерации (приблизительно)
  1. быстрее 1 секунды
  2. быстрее 1 секунды
  3. быстрее 1 секунды
  4. 2 секунды
  5. 1 минута
  6. 30 минут
  7. 1 день
  8. 25 дней
  9. 2.5 года
  10. 40 лет
  11. 640 лет
  12. 10 тысяч лет
  13. 160 тысяч лет
  14. 2.6 миллионов лет

Вот только греется по страшному! Как при бруте хорошем... :D

С выходом PHP7 команды:
Код:
apt-get install php5-cgi

apt-get install php5-mysql
больше неактуальны. Смена 5 на 7 не работает!
Кто найдет решение отпишитесь...
 
Спасибо! Все работает. Вопрос можно считать закрытым. Сделал изменения в теме.
Не за что, но в будущем лучше вопрос про php задавать в php разделе - форум большой и "чужие" разделы обычно никто не просматривает :)
 
Не за что, но в будущем лучше вопрос про php задавать в php разделе - форум большой и "чужие" разделы обычно никто не просматривает :)
Хорошо

Кстати, кто знает почему в новой Kali отказывается запускаться Shallot? А только в версии 1.0.6
Какие зависимости нужны?
В Blackarch все работает...
 
провайдер может узнать о моем сайте, если на своем пк сервер создать?
 
Жив ли данный способ создания сайтов до сих пор или может появился новый? Решился ли вопрос с генерацией нормального названия сайта на свежих (последних) версиях кали (2019.1)?

Жив ли данный способ создания сайтов до сих пор или может появился новый? Решился ли вопрос с генерацией нормального названия сайта на свежих (последних) версиях кали (2019.1)?
Также следом идёт вопрос, могу ли я SEP'ом (social engineering tool) копировать/клонировать/дублировать onion-сайт и перезалить его данным способом? Если да, то как?
 
Жив ли данный способ создания сайтов до сих пор или может появился новый? Решился ли вопрос с генерацией нормального названия сайта на свежих (последних) версиях кали (2019.1)?
Способ вполне работоспособен.
По генерации имён доменов - Как сгенерировать произвольный адрес onion-домена в сети Tor?
Также следом идёт вопрос, могу ли я SEP'ом (social engineering tool) копировать/клонировать/дублировать onion-сайт и перезалить его данным способом? Если да, то как?
По SET не скажу наверняка. Я использую для данных целей консольный httrack в связке с torsocks. Попробуйте сами - не пожалеете.
 
Способ вполне работоспособен.
По генерации имён доменов - Как сгенерировать произвольный адрес onion-домена в сети Tor?

По SET не скажу наверняка. Я использую для данных целей консольный httrack в связке с torsocks. Попробуйте сами - не пожалеете.
Тогда такие вопросы
1. Данную строчку вписывать в самом конце txt файла или в том разделе, где мы меняли порт?
Код:
ExcludeNodes {ru}, {ua}, {be}
2. Первый раз когда не пользовался Shallot не нашел данную папку /var/lib/tor/hidden_service
3. В /etc/lighttpd/lighttpd.conf теперь другой код и не ясно, что именно теперь там надо менять
Код:
server.modules = (
    "mod_indexfile",
    "mod_access",
    "mod_alias",
     "mod_redirect",
)

server.document-root        = "/var/www/onion"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 8080

# strict parsing and normalization of URL for consistency and security
# https://redmine.lighttpd.net/projects/lighttpd/wiki/Server_http-parseoptsDetails
# (might need to explicitly set "url-path-2f-decode" = "disable"
#  if a specific application is encoding URLs inside url-path)
server.http-parseopts = (
  "header-strict"           => "enable",# default
  "host-strict"             => "enable",# default
  "host-normalize"          => "enable",# default
  "url-normalize-unreserved"=> "enable",# recommended highly
  "url-normalize-required"  => "enable",# recommended
  "url-ctrls-reject"        => "enable",# recommended
  "url-path-2f-decode"      => "enable",# recommended highly (unless breaks app)
 #"url-path-2f-reject"      => "enable",
  "url-path-dotseg-remove"  => "enable",# recommended highly (unless breaks app)
 #"url-path-dotseg-reject"  => "enable",
 #"url-query-20-plus"       => "enable",# consistency in query string
)

index-file.names            = ( "index.php", "index.html" )
url.access-deny             = ( "" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )

# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.conf.pl"
include "/etc/lighttpd/conf-enabled/*.conf"

#server.compat-module-load   = "disable"
server.modules += (
    "mod_compress",
    "mod_dirlisting",
    "mod_staticfile",
)
4. Теперь в /etc/php/7.0/cgi/php.ini , а /etc/php/7.3/cli/php.ini, это одно и тоже?
5. Соответсвенно данные команды не выполняются
lighttpd-enable-mod fastcgi lighttpd-enable-mod fastcgi-php
6. Ну теперь главный вопрос, как снести полностью тор и данные сервисы, чтобы провести операцию заново, и где найти недостающие файлы /hidden_service, если конечно Eschalot не создаст их сам, или нужно в ручную их делать?
7. Есть мануал по httrack + torsocks?
 
4. Теперь в /etc/php/7.0/cgi/php.ini , а /etc/php/7.3/cli/php.ini, это одно и тоже?
5. Соответсвенно данные команды не выполняются
lighttpd-enable-mod fastcgi lighttpd-enable-mod fastcgi-php
Установил cgi данная проблема решена, но не выполняются команды
Код:
root@WK:~# lighttpd-enable-mod fastcgi
bash: lighttpd: команда не найдена
root@WK:~# lighttpd-enable-mod fastcgi-php
bash: lighttpd-enable-mod: команда не найдена
 
Последнее редактирование:
Просто не генерируется данная папка, хотя в /etc/tor/torrc изменял параметры и перезапускал сервисы tor'a
тут описывается задача поднять вебсервер,и по сути ты можешь использовать другую связку например nginx+php+mariadb,почему ты все пытаешься сделать по шаблону?)
 
тут описывается задача поднять вебсервер,и по сути ты можешь использовать другую связку например nginx+php+mariadb,почему ты все пытаешься сделать по шаблону?)
Ну вероятно потому что на первый раз имеются знания сделать только по шаблону, дабы потом что-то менять? Вообще как и что делается, понял, но везде написано, что в данном месте:
Просто не генерируется данная папка, хотя в /etc/tor/torrc изменял параметры и перезапускал сервисы tor'a
должны генерироваться файлы hostname и private_key, из этих двух появляется только hostname, следовательно вопрос, как изменить сгенерированное системой имя хоста, если private_key'я нет?
А так во всем разобрался
 
Помогите с этой ошибкой пожалуйста!!
Код:
root@kali:~# cd Shallot-master
root@kali:~/Shallot-master# ./configure
Liunx detected.  Have you considered switching to BSD?
Configuration successful.  This does not mean it will build.
If you are missing gcc, or required libraries/headers, you
will need to install them first.
root@kali:~/Shallot-master# make
cc  -O3 -I/usr/include -I/usr/local/include -L/usr/lib -L/usr/local/lib  -Wall -o src/math.o -c src/math.c
src/math.c: In function ‘easygen’:
src/math.c:30:5: warning: ‘RSA_generate_key’ is deprecated [-Wdeprecated-declarations]
     rsa = RSA_generate_key(num, 3, NULL, NULL);
     ^~~
In file included from /usr/include/openssl/e_os2.h:13,
                 from /usr/include/openssl/bn.h:14,
                 from src/math.h:23,
                 from src/math.c:3:
/usr/include/openssl/rsa.h:234:1: note: declared here
 DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void
 ^~~~~~~~~~~~~~~~~~
src/math.c: In function ‘sane_key’:
src/math.c:67:17: error: dereferencing pointer to incomplete type ‘RSA’ {aka ‘struct rsa_st’}
   BN_sub(p1, rsa->p, BN_value_one()); // p - 1
                 ^~
src/math.c:78:10: error: dereferencing pointer to incomplete type ‘BIGNUM’ {aka ‘struct bignum_st’}
   if(!chk->neg)
          ^~
make: *** [Makefile:44: src/math.o] Ошибка 1
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!