
🐍 - Краулер по сайтам сети Tor, выполняющий поиск по ключевым словам.
Краулер для сайтов сети Tor, выполняющий поиск по ключевым словам.
VigilantOnion используется командами Cyber Threat Intelligence, чтобы они могли отслеживать и получать наилучший результат проверок, проводимых в сети Tor.
В первой версии, где использовался django для администрирования и создания дашбордов, возникла большая сложность в использовании. В этой новой версии проверки и методология, применяемая для устранения ложных срабатываний, стали лучше.
Чтобы устранить ложные срабатывания и повысить уровень точности, я использую yararule и заметки, задавая высокие значения для правил, которые считаю наиболее важными, как показано на рисунке ниже:

Эти значения динамические и могут меняться в соответствии с вашими потребностями.
Новые yararules можно добавлять как в файлы категорий, так и в файлы ключевых слов, чтобы вы могли устранять ложные срабатывания и получать более приятные результаты.
В файле настроек нужно изменить немногое, однако эти параметры имеют большое значение для использования скрипта.
Поля ниже предназначены для настройки прокси сети Tor; если вы запускаете скрипт в Windows, порт обычно меняется на 9051
server_proxy: localhost
port_proxy: 9050
type_proxy: socks5h
Поле timeout сервера позволяет определить время ожидания запросов; чем больше время, тем дольше может выполняться скрипт.
timeout: 30
Поля score сервера позволяют определить минимальное значение оценки, при котором URL будет просканирован и отправлен в syslog.
score_categorie: 20
score_keywords: 40
Некоторые URL будут недоступны, и трудно понять, вернутся ли они, поэтому я создал счётчик, с помощью которого можно определить максимальное число попыток; после его достижения скрипт больше не будет пытаться обратиться к этому URL.
count_categories: 5
Каждый раз, когда выполняется сканирование URL, оно сохраняется с датой последнего сканирования, и вы можете определить ограничение по времени в днях между одним сканированием и другим для того же URL.
daystime: 10
И наконец, я больше не использую django; теперь для просмотра результатов вам нужен syslog, например Splunk или ELK, и вам достаточно определить их здесь
sendlog: True
logport: 5151
logip: "localhost"
Использовать его проще: вам нужно только установить tor и библиотеки Python; для этого выполните команду ниже:
pip install -r requirements.txt
После установки клиента tor и библиотек используйте команду --help, чтобы получить сведения о его использовании.
➜ python3 observer.py -h
usage: observer.py [-h] [--config CONFIG] [--crawler] [--url URL] [--search]
[--engines ENGINES] [--find FIND] [--pastebin PASTEBIN]
VigilantOnion is a script to collect as many sites from the onion network as
possible and add them to a database. With all possible sites collected, a
crawler will be created so that we can monitor the search for keywords defined
by you.
optional arguments:
-h, --help show this help message and exit
--config CONFIG, -c CONFIG
Configuration file in yaml format
--crawler Starts the TOR network URL crawler process.
--url URL, -u URL Specifies the URL to crawl.
--search Start the URL search process on the surface. Select a
framework where you want to search for urls.
--engines ENGINES, -e ENGINES
Validates the available engines for searching URLs.
--find FIND, -f FIND Search for arguments on .onion network research sites
--pastebin PASTEBIN Search for .onion urls in pastebin paste.
You can also develop new framework so that the database has more urls onions.
Для работы скрипта нужны новые URL-адреса, и для этого я создал метод, который ищет URL-адреса в открытой сети, как в примере ниже:
python3.6 observer.py --config config/config.yml --search -e "gist,reddit,cybersecuritynews,discoverdarkwebservice"
Вы также можете получать URL-адреса напрямую из файлов pastebin, как в примере ниже:
python3.6 observer.py --config config/config.yml --search --pastebin "s7TPZCKz,kSaYqtVX,0GYEEApe,3qkqyqiM,RfgBLg5Q,gtksBij4,FpPzQKHg,wB0uh00r,jDGJhQCC,q6DZ9U,ac2TnUjY,pv4xRWXQ,PgLUE7pF,9XW5Pc7R,hqyGMi7e,UZRM2z8y,7tQvV5CU,9JhVq3H3,Cb5HTydt,kMW5wp3N,v5Yq66sH,2q3SsR3a,gnd8jx97,QwSJYhYF,iNydrDfe"
После сбора некоторого количества URL-адресов вы можете запустить процесс сканирования. Помните, что первый запуск займёт больше всего времени, поскольку именно на этом этапе выполняется классификация и категоризация содержимого веб-сайтов.
python3.6 observer.py --config config/config.yml --crawler
Если вы хотите просканировать один URL-адрес, используйте:
python3.6 observer.py --config config/config.yml --crawler --url "76qugh5bey5gum7l.onion"
Результат выводится в формате json и в том же формате отправляется в выбранный syslog.
{
"lastscan": "2020-06-29",
"id": 10760,
"type": "URI",
"url": "lolitmhfkpif7sky.onion",
"title": "Lolita Club",
"baseurl": "vyqi2nm36otufrgg.onion",
"status": "Online",
"count_status": 0,
"source": "Script",
"categorie": [
{
"full_categorie": [
"no_match"
],
"score_categorie": 0
}
],
"keywords": [
{
"full_keywords": [
"no_match"
],
"score_keywords": 0
}
],
"discovery_date": "2020-06-29 14:24"
}
Я использую splunk, и вы можете сделать свою панель управления похожей на мою:

Не стесняйтесь форкнуть проект или открыть issue, чтобы сотрудничать с проектом.