
Zscan — набор инструментов для сканирования и взлома
Содержание обновлений см. в журнале log
Zscan - это набор инструментов с открытым исходным кодом, включающий сканер внутренней сети, брутфорсер и другие полезные утилиты, которые можно назвать инструментарием. Основываясь на обнаружении подсетей внутренней сети, обнаружении хостов и сканировании портов, в модуле blast можно брутить такие сервисы, как MySQL, MSSQL, Redis, Mongo, PostgreSQL, FTP, SSH, LDAP, RDP, SMB, а в модуле scan выполнять сканирование NetBIOS, SMB, OXID, SOCKS-серверов (сканирование прокси-серверов), MS17-010, POC-сканирование HTTP и другие функции. По умолчанию извлекаются заголовки HTTP и отпечатки (fingerprints). В модуле server можно запустить HTTP (с возможностью загрузки и скачивания файлов) и SOCKS5-сервер (прокси-сервер), а в модуле tools пока что интегрирован только nc. Недавно добавлен модуль exploit, позволяющий использовать успешно взломанные сервисы: интерактивный вход по SSH (пароль или ключ), репликацию ведущий-ведомый для Redis и побег из Lua-песочницы (загрузка файлов и выполнение команд), запросы LDAP (встроенные часто используемые запросы). Также есть модуль all, который при сканировании запускает все модули сканирования и брута. Поддерживается сканирование IPv6, ввод доменов с автоматическим определением CDN. Подробные функции модулей описаны ниже.
Инструмент имеет достаточно большой размер; в будущем выйдет облегченная версия, модульная конструкция позволяет легко отключать ненужные функции.``` all 调用所有扫描和爆破模块 ping 主机发现和网段发现 ps 基本的端口扫描和http指纹识别title抓取 scan 扫描模块 --->ms17010扫描 --->poc漏洞扫描(内置380个poc) --->proxyfind内网代理服务器扫描 --->winscan Windows的smb,netbios和oxid扫描 blast 爆破服务模块(包括以下爆破模块) --->ftp --->ldap --->mongo --->mssql --->mysql --->postgres --->rdp --->redis --->smb --->ssh server start http server or socks5 server --->http服务器(可上传下载文件) --->socks5服务器(可启动一个代理服务器,支持身份验证) exploit 漏洞利用模块 --->ldap查询 --->redis组从复制上传文件执行命令,lua沙箱逃逸RCE --->snmp查询 --->ssh登陆 --->sunlogin向日葵RCE tools 实用工具模块 --->nc简单的nc,可以开放端口连接端口 --->searchfile支持多线程正则搜索文件
Формат использования:```
zscan 模块 参数
venom.json), включая VirusTotal, YARA, Volatility, Sysinternals Suite и другие./___ \ /\ \ /\ \ /\ __ \ /\ "-.\ \
// / \ _ \ \ \ ___ \ \ __ \ \ \ -. \
/_\ /_\ \ ___\ \ _\ _\ \ _\"_\
// // /_____/ //// // //
Usage: zscan [command]
Available Commands: all Use all scan mode blast Common service blasting exploit sshlogin,redisexec help Help about any command ping ping scan to find computer ps Port Scan scan ms17010,proxyfind,snmp,winscan(smb,netbios,oxid),poc server start http server or socks5 server
Flags: -h, --help help for zscan --nobar disable portscan progress bar -o, --output string the path of result file (default "result.txt") --proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080) -T, --thread thread Set thread eg:2000 (default 600) -t, --timeout time Set timeout(s) eg:5s (default 5s) -v, --verbose Show verbose information
Флаг в модуле представляет параметр текущей команды, Global Flags — глобальные параметры (доступны для всех команд)
Здесь Flags — глобальные параметры, доступны для всех модулей
- --log: при включении этого параметра текущий результат выполнения будет дописываться в log.txt (можно сохранять результаты каждого запуска)
- -o --output: по умолчанию файл в текущем каталоге называется Hosts, -o указывает путь
- --proxy: установка прокси, имя пользователя и пароль (user:pass@ip:port), без проверки подлинности (ip:port)
- -T --thread: количество потоков, по умолчанию 100
- -t --timeout: установка тайм-аута, при хороших сетевых условиях и стремлении к скорости можно установить 1 с
- -v --verbose: отображение информации о процессе сканирования
## Функциональные модули 😈
Текущие доступные модули:
<details>
<summary><b>Модуль ping: обычный пользователь вызывает системный ping, с правами root можно использовать ICMP-пакеты</b></summary>```
zscan ping
Мониторинг и уведомление о DNS-туннелировании
Flags: -d, --discover string Live network segment found,local parameter uses the local NIC information。eg:zscan ping -d local/zscan ping -d 172.18.0.0,172.19.0.0 -h, --help help for ping -H, --host hosts Set hosts(The format is similar to Nmap) --hostfile string Set host file -i, --icmp Icmp packets are sent to check whether the host is alive(need root)
Global Flags: --nobar disable portscan progress bar -o, --output string the path of result file (default "result.txt") --proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080) -T, --thread thread Set thread eg:2000 (default 600) -t, --timeout time Set timeout(s) eg:5s (default 5s) -v, --verbose Show verbose information
Необходимо указать один из двух параметров: host или hostfile. При наличии прав root можно использовать -i, чтобы не вызывать локальный ping, а отправлять ICMP-пакеты самостоятельно (если количество потоков очень велико, например, тысячи, вызов локальной команды ping вызовет высокую загрузку CPU).
--discover имеет два режима обнаружения подсетей: ping шлюза сети B-сегмента и сканирование OXID.
--discover требует указать параметр. Если указать local (zscan ping --discover local), то будет прочитана информация о локальных сетевых интерфейсах и просканированы локальные B-сегменты сети. Например, если обнаружены две сетевые карты 192.168.13.13 и 172.16.95.23, то будут пропингованны B-сегменты 192.168.0.0/16 и 172.16.0.0/16.
Также можно указать один или несколько IP-адресов B-сегмента, например, 172.17.0.0 или 172.18.0.0,10.10.0.0. Несколько сегментов перечисляются через запятую.
</details>
<details>
<summary><b>модуль ps: сканирование портов и получение HTTP-заголовков</b></summary>```
zscan ps
Usage: zscan ps [flags]
Flags: -b, --banner Return banner information -h, --help help for ps -H, --host hosts Set hosts(The format is similar to Nmap) eg:192.168.1.1/24,172.16.95.1-100,127.0.0.1 --hostfile string Set host file -i, --icmp Icmp packets are sent to check whether the host is alive(need root) --noping not ping discovery before port scanning --nowebscan Whether to perform HTTP scanning (httpTitle and HTTP vulnerabilities)(default on) -p, --port port Set port eg:1-1000,3306,3389 or use " zscan ps -p l" ) to scan less port(thirty port) -s, --syn use syn scan --vulscan Whether to perform HTTP vulnerabilities(default off)
Global Flags: --nobar disable portscan progress bar -o, --output string the path of result file (default "result.txt") --proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080) -T, --thread thread Set thread eg:2000 (default 600) -t, --timeout time Set timeout(s) eg:5s (default 5s) -v, --verbose Show verbose information
`--host` и `--hostfile` указывают цели
`-p` указывает порт, если не указано, используется порт по умолчанию, или укажите «l» для использования менее распространённых портов (примерно тридцать часто используемых портов)
`--noping` напрямую сканирует все цели без предварительного пинга
`--icmp` при использовании пинга использует ICMP-пакеты для обнаружения хостов
`--nowebscan` параметр для отключения веб-сканирования, выполняется только сканирование портов
`--vulscan` параметр для включения обнаружения PoC (можно использовать только при включённом веб-сканировании, иначе бессмысленно)
`--syn` использует SYN-сканирование (требуются повышенные привилегии)
</details>
<details>
<summary><b>модуль all: вызывает все модули сканирования и перебора для сканирования</b></summary>```
zscan all
Usage:
zscan all [flags]
Flags:
-h, --help help for all
-H, --host hosts Set hosts(The format is similar to Nmap) eg:192.168.1.1/24,172.16.95.1-100,127.0.0.1
--hostfile string Set host file
-i, --icmp Icmp packets are sent to check whether the host is alive(need root)
--noburp Set postgres passworddict path
--noping Not ping before port scanning
--novulscan disable http vulnerability scan
--passdict string Set postgres passworddict path
-P, --password string Set postgres password
-p, --port port Set port eg:1-1000,3306,3389 or use " zscan all -p l" ) to scan less port(thirty port)
-U, --username string Set user name
Global Flags:
--nobar disable portscan progress bar
-o, --output string the path of result file (default "result.txt")
--proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080)
-T, --thread thread Set thread eg:2000 (default 600)
-t, --timeout time Set timeout(s) eg:5s (default 5s)
-v, --verbose Show verbose information
```
Модуль all по сути почти такой же, как модуль ps, за исключением того, что при сканировании соответствующего порта модуль all выполняет идентификацию отпечатка (fingerprint) или брутфорс имени пользователя и пароля в текущем потоке.
Параметры модуля all такие же, как у модуля ps, только добавлен словарь паролей, который используется для установки словаря при обнаружении порта, требующего брутфорса. Всё остальное то же самое.
--notburp не выполнять брутфорс, только сканирование
--novulscan поскольку модуль all вызывает все модули, этот параметр используется для отключения сканирования уязвимостей
</details>
<details>
<summary><b>blast: модуль брутфорса, включающий брутфорс распространённых служб</b></summary>```
zscan blast
```
请提供需要翻译的Markdown内容。```
Usage:
zscan blast [command]
Available Commands:
ftp burp ftp username and password
ldap burp ldap username and password
mongo burp mongodb username and password
mssql burp mssql username and password
mysql burp mysql username and password
postgres burp postgres username and password
rdp burp remote desktop(3389)
redis burp redis password
smb burp smb usernamae and password
ssh burp ssh username password or traverse the key
Flags:
-h, --help help for blast
Global Flags:
--nobar disable portscan progress bar
-o, --output string the path of result file (default "result.txt")
--proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080)
-T, --thread thread Set thread eg:2000 (default 600)
-t, --timeout time Set timeout(s) eg:5s (default 5s)
-v, --verbose Show verbose information
```
基本上所有的爆破模块使用方式都相同,指定用户名密码或者用户名密码字典即可,还可以指定爆破线程,这个线程和-T的线程不同,-T的线程代表我们并发扫描的目标数量(这个目标是ip和端口的组合,每次并发相当于对目标发送了一个数据包),burptheard代表当我们在上面的并发扫描的单个线程中发现了我们的目标端口例如mysql,他会在当前的扫描线程中开启一个多线程爆破(这里的目标换成了特定ip特定的一个端口,这里就需要进行限速,速度太快可能导致目标服务不可用)
В основном все модули брутфорса используются одинаково: достаточно указать имя пользователя и пароль или словарь паролей, а также можно задать количество потоков для брутфорса. Эти потоки отличаются от потоков -T: потоки -T определяют количество целей для параллельного сканирования (цель — комбинация IP и порта, каждый параллельный запрос эквивалентен отправке одного пакета цели). burptheard означает, что когда в одном из потоков параллельного сканирования мы обнаружили целевой порт (например, MySQL), он запускает в текущем потоке сканирования многопоточный брутфорс (здесь цель заменяется на конкретный IP и конкретный порт, поэтому необходимо ограничивать скорость, иначе слишком быстрый брутфорс может сделать целевой сервис недоступным).
</details>
<details>
<summary><b>модуль scan: типовые модули сканирования</b></summary>```
Usage:
zscan scan [command]
Available Commands:
ms17010 MS17_010 scan
poc poc check
proxyfind Scan proxy
snmp snmp scan
winscan netbios、smb、oxid scan
Flags:
-h, --help help for scan
Global Flags:
--nobar disable portscan progress bar
-o, --output string the path of result file (default "result.txt")
--proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080)
-T, --thread thread Set thread eg:2000 (default 600)
-t, --timeout time Set timeout(s) eg:5s (default 5s)
-v, --verbose Show verbose information
```
<details>
<summary><b>Модуль proxyfind: сканирует прокси в сети, в настоящее время поддерживает socks4/5, в будущем будет добавлен http</b></summary>```
zscan scan proxyfind
```
Запустить программу командной строки.```
Usage:
zscan proxyfind [flags]
Flags:
-h, --help help for proxyfind
-H, --host hosts Set hosts(The format is similar to Nmap) eg:192.168.1.1/24,172.16.95.1-100,127.0.0.1
--hostfile string Set host file
-p, --ports port Set port eg:1-1000,3306,3389 (default "1080,1089,8080,7890,10808")
--type string Set the scan proxy type(socks4/socks5/http) (default "socks5")
Global Flags:
--log Record the scan results in chronological order,Save path./log.txt
-O, --output Whether to enter the results into a file(default ./result.txt),can use --path set
--path string the path of result file (default "result.txt")
-T, --thread thread Set thread eg:2000 (default 100)
-t, --timeout time Set timeout(s) eg:5s (default 3s)
-v, --verbose Show verbose information
```
Сканирование прокси-серверов во внутренней сети
-H указывает цель, -p указывает порт, --type указывает тип сканируемого прокси-протокола (в настоящее время поддерживаются socks4/5, другие протоколы в разработке)
</details>
<details>
<summary><b>модуль ms17010: массовое сканирование уязвимости ms17010</b></summary>```
Usage:
zscan scan ms17010 [flags]
Flags:
-h, --help help for ms17010
-H, --host string Set target
--hostfile string Set host file
Global Flags:
--log Record the scan results in chronological order,Save path./log.txt
-O, --output Whether to enter the results into a file(default ./result.txt),can use --path set
--path string the path of result file (default "result.txt")
-T, --thread thread Set thread eg:2000 (default 100)
-t, --timeout time Set timeout(s) eg:5s (default 3s)
-v, --verbose Show verbose information
```
Просто укажите цель
</details>
<details>
<summary><b>Модуль winscan: содержит функции сканирования oxid, smb, netbios</b></summary>```
Usage:
zscan scan winscan [flags]
Flags:
-h, --help help for winscan
-H, --host string Set target
--hostfile string Set host file
--netbios netbios scan
--oxid oxid scan
--smb smb scan
Global Flags:
--log Record the scan results in chronological order,Save path./log.txt
-O, --output Whether to enter the results into a file(default ./result.txt),can use --path set
--path string the path of result file (default "result.txt")
-T, --thread thread Set thread eg:2000 (default 100)
-t, --timeout time Set timeout(s) eg:5s (default 3s)
-v, --verbose Show verbose information
```
Если указать цель напрямую, будут сканироваться netbios, oxid, smb. Можно использовать `--`, чтобы указать использование только одного.
</details>
<details>
<summary><b>модуль poc: как отдельный модуль, так и функция, вызываемая в других модулях</b></summary>```
poc check
Usage:
zscan scan poc [flags]
Flags:
-h, --help help for poc
-l, --listpoc List built in poc
--pocname string set the poc name
--pocpath string set target url
--pocthread int set poc scan thread (default 500)
-u, --url string set target url
--urlfile string set target file
Global Flags:
--nobar disable portscan progress bar
-o, --output string the path of result file (default "result.txt")
--proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080)
-T, --thread thread Set thread eg:2000 (default 600)
-t, --timeout time Set timeout(s) eg:5s (default 5s)
-v, --verbose Show verbose information
```
-l/--list: перечисляет встроенные poc инструмента
--pocname: на самом деле это опция фильтрации, которая отфильтровывает poc, содержащие указанное поле в имени (доступно как для сканирования, так и для просмотра)
--pocpth: если указать директорию, будут использованы все poc в ней; если указать конкретный poc, будет использован только он
--pocthread: потоки для сканирования poc
--url/--urlfile: указание цели. -u/--url для одной цели, можно массово сканировать, указав txt файл
</details>
</details>
<details>
<summary><b>server модуль: включить серверный модуль</b></summary>```
Usage:
zscan server [command]
Available Commands:
httpserver Start an authentication HTTP server
socks5 Create a socks5 server
Flags:
-h, --help help for server
Global Flags:
--nobar disable portscan progress bar
-o, --output string the path of result file (default "result.txt")
--proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080)
-T, --thread thread Set thread eg:2000 (default 600)
-t, --timeout time Set timeout(s) eg:5s (default 5s)
-v, --verbose Show verbose information
```
<details>
<summary><b>socks5 модуль: запуск socks5 сервера</b></summary>```
zscan socks5
```
". Wait, the user's message ends with "INPUT:" and then a newline, and then the word "response"? That seems odd. Possibly the chunk content was not included. Let me re-read:
The user says:
"You are a specialised cybersecurity tool content translator...
...
INPUT:"
Then a blank line, then "response".
That suggests the actual chunk content might be missing. But the instruction says "INPUT:" and then the content should follow. Possibly a formatting error? Maybe the chunk is empty? Or the user intended to provide the chunk but didn't.
Given the strict instructions, I must only output the translated text based on the input. If the input is empty, then my response should be empty? But that seems wrong. Alternatively, maybe the chunk is the word "response"? No, the word "response" is likely part of the user's message structure, not the content.
Wait, the user's full message ends with:
"INPUT:
response"
The way it's written, "INPUT:" on its own line, then a blank line, then " response" (with a leading space). That could be interpreted as the input is " response" (including the space). But that seems unlikely for a README chunk.
Perhaps there is a mistake. Given that this is an AI interaction, I should assume that the actual chunk content was not provided. However, I must comply with the instruction to return only the translated text. If no text is given, I should return nothing.
But the user expects a translation. Perhaps the chunk content is actually empty? In that case, the translation is empty.
Given the strict "Return ONLY the translated text" and no extra commentary, I think the safest response is an empty string.
But let's check: the user says "This is chunk 39 of 81". So there must be content. Maybe the content is the word "response"? That seems like a placeholder.
I'll re-read the user's message carefully:
"Translate the following Kitploit tool content.
This is chunk 39 of 81 from a longer Markdown document being translated in sequence.
The source language is zh.
Target language: ru.
Content type: README chunk 39/81.
CHUNK-SPECIFIC RULES:
...
...
INPUT:
response"
After "INPUT:" there is a blank line, then " response" on the next line (with a space before it). It's possible that the chunk content is " response" (including the leading space). But that's just one word. Alternatively, maybe the formatting is off and the input includes the word "response" as part of the content? That seems odd.
Given the context, I suspect the user intended to provide a chunk but the message got cut off. Since I cannot ask for clarification, I must work with what's given. The only text after "INPUT:" is " response". I will treat that as the content to translate, even if it's just a single word.
"response" is English, but the source language is Chinese (zh). So it's not Chinese. Possibly it's a mistake. Nevertheless, according to rules, I should translate natural language text. "response" is natural language, but it's English. The source is zh, so maybe it's a code word? But it's not code, it's plain text. Translating "response" to Russian would be "ответ". But the rule says translate only natural language, and preserve all Markdown. There is no Markdown here, just the word "response". So I should translate it.
But wait: the chunk is supposed to be from a Chinese document. "response" is not Chinese. Could it be that the chunk content is actually the word "response" in Chinese? No, the user wrote "response" in English. Maybe it's a placeholder.
Given the ambiguity, I think the most compliant approach is to output nothing, because there is no clear content to translate. However, the instruction says "Return ONLY the translated text." If there is no text, I return nothing.
I'll go with empty response.```
Usage:
zscan server socks5 [flags]
Flags:
-a, --addr string Specify the IP address and port of the Socks5 service (default "0.0.0.0:1080")
-h, --help help for socks5
-P, --password string Set the socks5 service authentication password
-U, --username string Set the socks5 service authentication user name
Global Flags:
--log Record the scan results in chronological order,Save path./log.txt
-O, --output Whether to enter the results into a file(default ./result.txt),can use --path set
--path string the path of result file (default "result.txt")
-T, --thread thread Set thread eg:2000 (default 100)
-t, --timeout time Set timeout(s) eg:5s (default 3s)
-v, --verbose Show verbose information
```
Можно использовать -a для указания IP и порта прослушивания службы socks5
-p и -u указывают имя пользователя и пароль прокси
</details>
<details>
<summary><b>Модуль httpserver: запускает HTTP-сервер с поддержкой аутентификации и загрузки файлов</b></summary>```
Usage:
zscan server httpserver [flags]
Flags:
-a, --addr string set http server addr (default "0.0.0.0:7001")
-d, --dir string set HTTP server root directory (default ".")
-h, --help help for httpserver
-P, --pass string Set the authentication password
-U, --user string Set the authentication user
Global Flags:
--log Record the scan results in chronological order,Save path./log.txt
-O, --output Whether to enter the results into a file(default ./result.txt),can use --path set
--path string the path of result file (default "result.txt")
-T, --thread thread Set thread eg:2000 (default 100)
-t, --timeout time Set timeout(s) eg:5s (default 3s)
-v, --verbose Show verbose information
```
Запуск простого HTTP-сервера, который может загружать и скачивать файлы. Для загрузки файлов используйте параметр -u
-a указывает IP-адрес и порт для прослушивания
-d указывает корневую директорию HTTP-сервера
-P и -U задают имя пользователя и пароль для аутентификации
</details>
</details>
<details>
<summary><b>Модуль tools: включает часто используемые инструменты</b></summary>```
Usage:
zscan tools [command]
Available Commands:
nc A easy nc
Flags:
-h, --help help for tools
Global Flags:
--nobar disable portscan progress bar
-o, --output string the path of result file (default "result.txt")
--proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080)
-T, --thread thread Set thread eg:2000 (default 600)
-t, --timeout time Set timeout(s) eg:5s (default 5s)
-v, --verbose Show verbose information
```
<details>
<summary><b>nc модуль: простой nc, который может открывать порты и подключаться к портам</b></summary>```
zscan nc
```
| Содержимое | Описание |
|------|------|
| PDF-файл | Поддерживает PDF-файлы в качестве носителя |
| DOCX-файл | Поддерживает DOCX-файлы в качестве носителя |
| XLSX-файл | Поддерживает XLSX-файлы в качестве носителя |
| PPTX-файл | Поддерживает PPTX-файлы в качестве носителя |
| Изображение BMP | Поддерживает изображения BMP в качестве носителя |
| Изображение JPG | Поддерживает изображения JPG в качестве носителя |
| Изображение GIF | Поддерживает изображения GIF в качестве носителя |```
Usage:
zscan nc [flags]
Flags:
-a, --addr string listen/connect host address eg(listen):-a 0.0.0.0:4444 eg(connect):-a 172.16.95.1:4444
-h, --help help for nc
-l, --listen listen mode(default connect)
Global Flags:
--log Record the scan results in chronological order,Save path./log.txt
-O, --output Whether to enter the results into a file(default ./result.txt),can use --path set
--path string the path of result file (default "result.txt")
-T, --thread thread Set thread eg:2000 (default 100)
-t, --timeout time Set timeout(s) eg:5s (default 3s)
-v, --verbose Show verbose information
-a指定地址,不使用-l的话代表连接目标,使用-l为监听端口
```
</details>
<details>
<summary><b>Модуль searchfile: многопоточный поиск файлов с поддержкой регулярных выражений</b></summary>```
Search files that support regular matching
Usage:
zscan tools searchfile [flags]
Flags:
-d, --dir string set search base Dir
-f, --file stringArray set filename eg:zscan tools searchfile -d ./ -f pass.txt -f user.txt
-h, --help help for searchfile
-r, --regexp stringArray Specifies the re matching parameters
--walk int Traversal turns on multithreading depth(Try not to go above 5) (default 3)
Global Flags:
--nobar disable portscan progress bar
-o, --output string the path of result file (default "result.txt")
--proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080)
-T, --thread thread Set thread eg:2000 (default 600)
-t, --timeout time Set timeout(s) eg:5s (default 5s)
-v, --verbose Show verbose information
```
-d указывает корневой каталог для поиска. В Linux можно использовать относительные пути, в Windows — абсолютные.
-f указывает имя файла для поиска. Можно использовать -f имя_файла1 -f имя_файла2 для поиска нескольких файлов.
-r — использование регулярных выражений. На самом деле -f также использует регулярные выражения, только заменяет их на `^文件名$`.
--walk указывает глубину обхода каталогов для запуска потоков: логически, под заданным каталогом обходится количество папок, и запускается соответствующее количество потоков для обхода этих подпапок. Поэтому глубина не должна быть слишком большой: хотя чем глубже, тем быстрее, это приводит к высокой загрузке ЦП (трёх уровней уже достаточно для высокой загрузки, поэтому в особых сценариях рекомендуется использовать 1).
</details>
</details>
<details>
<summary><b>Модуль exploit: модуль использования после успешного взлома сервиса</b></summary>```
Usage:
zscan exploit [command]
Available Commands:
ldap Ldap queries
redis Redis utilizes modules
snmp snmp scan
sshlogin Login using a user name, password, or key
sunlogin sunlogin RCE CNVD-2022-10270
Flags:
-h, --help help for exploit
Global Flags:
--nobar disable portscan progress bar
-o, --output string the path of result file (default "result.txt")
--proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080)
-T, --thread thread Set thread eg:2000 (default 600)
-t, --timeout time Set timeout(s) eg:5s (default 5s)
-v, --verbose Show verbose information
```
<details>
<summary><b>snmp модуль: snmp сканирование</b></summary>```
Usage:
zscan exploit snmp [flags]
```
#### Похожие проекты
- [**Paramount**](https://github.com/0xl3xx/Paramount) - многофункциональный инструмент, предоставляющий структурированную разбивку потенциальных путей повышения привилегий, обнаруженных в средах AWS, Azure, GCP и Kubernetes.
- [**Poutine**](https://github.com/DavidHoenisch/poutine) - сканер безопасности для обнаружения неправильных конфигураций и уязвимостей в пайплайнах DevOps и CI/CD.
- [**TierZero**](https://github.com/S4L1M-Sh4dow/TierZero) - инструмент автоматизированной оценки безопасности, помогающий операторам красных команд, пентестерам и исследователям безопасности сопоставлять и перечислять пути атак в средах Active Directory.
- [**Youzer**](https://github.com/saleem-123/Youzer) - инструмент PowerShell для перечисления пользователей Microsoft 365 и Azure AD и их подробных атрибутов.```
Flags:
--burpthread int Set burp password thread(recommend not to change) (default 100)
--get string set an oid
-h, --help help for snmp
-H, --host string Set target
--hostfile string Set host file
-l, --listoid List commonly used OIDs
--password string set a password (default "public")
--passwordfile string passwords dict file, eg: ./dict/password.txt
-p, --port port Set port (default 161)
--version string specifies SNMP version to use. 1|2c|3 (default "2c")
--walk string set an oid
Global Flags:
--log Record the scan results in chronological order,Save path./log.txt
-O, --output Whether to enter the results into a file(default ./result.txt),can use --path set
--path string the path of result file (default "result.txt")
-T, --thread thread Set thread eg:2000 (default 100)
-t, --timeout time Set timeout(s) eg:5s (default 3s)
-v, --verbose Show verbose information
```
--listoidперечисляет общую информацию о запросах```
0: 系统基本信息 SysDesc GET 1.3.6.1.2.1.1.1.0
1: 监控时间 sysUptime GET 1.3.6.1.2.1.1.3.0
2: 系统联系人 sysContact GET 1.3.6.1.2.1.1.4.0
3: 获取机器名 SysName GET 1.3.6.1.2.1.1.5.0
4: 机器所在位置 SysLocation GET 1.3.6.1.2.1.1.6.0
5: 机器提供的服务 SysService GET 1.3.6.1.2.1.1.7.0
6: 系统运行的进程列表 hrSWRunName WALK 1.3.6.1.2.1.25.4.2.1.2
7: 系统安装的软件列表 hrSWInstalledName WALK 1.3.6.1.2.1.25.6.3.1.2
8: 网络接口列表 ipAdEntAddr WALK 1.3.6.1.2.1.4.20.1.1
```
可以通过使用--walk和--get进行查询
密码不指定的话默认使用public
</details>
<details>
<summary><b>sshlogin:может выполнять вход по SSH с помощью пароля и ключа</b></summary>```
Usage:
zscan exploit sshlogin [flags]
Flags:
-h, --help help for sshlogin
-H, --host string Set ssh server host
-d, --keypath string Set public key path
-k, --login_key Use public key login
-P, --password string Set ssh password
-p, --port int Set ssh server port (default 22)
-U, --username string Set ssh username
Global Flags:
--nobar disable portscan progress bar
-o, --output string the path of result file (default "result.txt")
--proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080)
-T, --thread thread Set thread eg:2000 (default 600)
-t, --timeout time Set timeout(s) eg:5s (default 5s)
-v, --verbose Show verbose information
```
Вход по логину и паролю: ./zscan exploit ssh -H 172.16.95.24 -U root -P 123456
Вход по открытому ключу: ./zscan exploit ssh -H 172.16.95.24 -U root -k
По умолчанию вход по открытому ключу берет закрытый ключ из ./ssh в домашнем каталоге текущего пользователя. Можно указать путь к закрытому ключу с помощью -d/--keypath
</details>
<details>
<summary><b>redis: модуль эксплуатации redis</b></summary>```
Usage:
zscan exploit redis [flags]
Flags:
-c, --command string Set the command you want to execute eg:(zscan exploit redis -H 172.16.95.16 -P 123456 -c "keys *")
--dstpath string set target path
--exec use execute the command mode
-h, --help help for redis
-H, --host string Set redis server host
--lhost string set listen host(!!!Make sure the target has access!!!)
--lport int set listen port(!!!Make sure the target has access!!!) (default 20001)
--lua use CVE-2022-0543 to attack
-P, --password string Set redis password
-p, --port int Set redis server port (default 6379)
--so string set .so file path
--srcpath string set upload file path
--upload use upload mode
Global Flags:
--nobar disable portscan progress bar
-o, --output string the path of result file (default "result.txt")
--proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080)
-T, --thread thread Set thread eg:2000 (default 600)
-t, --timeout time Set timeout(s) eg:5s (default 5s)
-v, --verbose Show verbose information
```
-c используется для выполнения обычных команд Redis
--exec: режим выполнения команд с использованием репликации мастер-ведомый
--upload: режим загрузки файлов с использованием репликации мастер-ведомый
--lua: режим использования уязвимости обхода песочницы Lua
Один из этих четырех параметров обязателен
--detpath: задает абсолютный путь для загрузки файла на цель при репликации мастер-ведомый
--lport: порт, который слушает ведущий узел (т.е. zscan) при репликации мастер-ведомый, по умолчанию 20001
--lhost: адрес, который слушает ведущий узел (т.е. zscan) при репликации мастер-ведомый; необходимо, чтобы целевой Redis мог к нему обратиться
--so: файл .so, загружаемый на цель при выполнении команд через репликацию мастер-ведомый
--srcpath: исходный файл для загрузки при репликации мастер-ведомый
</details>
<details>
<summary><b>Модуль sunlogin: эксплойт RCE для Sunlogin</b></summary>```
sunlogin RCE CNVD-2022-10270
Usage:
zscan exploit sunlogin [flags]
Flags:
-c, --command string command you want to execute
-h, --help help for sunlogin
-H, --host string Set redis server host
-p, --port int Set RCE port
Global Flags:
--nobar disable portscan progress bar
-o, --output string the path of result file (default "result.txt")
--proxy string Connect with a proxy(user:[email protected]:1080 or 172.16.95.1:1080)
-T, --thread thread Set thread eg:2000 (default 600)
-t, --timeout time Set timeout(s) eg:5s (default 5s)
-v, --verbose Show verbose information
```
Обнаружение уязвимостей может быть выполнено с помощью модуля ps или all для сканирования диапазона портов 40000-65535, при этом автоматически определяются порты с уязвимостями.
С помощью -c можно выполнить одну команду, без -c перейти в интерактивный режим (псевдоинтерактивный) для выполнения команд по мере ввода.
-p указывает порт.
</details>
</details>
## 使用示例🤪
<details>
<summary><b>Обнаружение подсети ping: zscan ping --discover local</b></summary>```
zscan ping --discover local或者
zscan ping --discover 192.168.0.0
```


</details>
<details>
<summary><b>ps сканирование портов:zscan ps -H ip</b></summary>```
zscan ps -H 172.16.95.1-30 [--noping禁用ping]
zscan ps -H 172.16.95.1-30 --vulsacn //扫描完http banner之后进行poc探测
zscan ps -H 172.16.95.1-30 --nowebscan //只扫描端口,不进行http探测
```



</details>
<details>
<summary><b>Модуль SSH: брутфорс/логин </b></summary>```
爆破 zscan blast ssh -H 172.16.95.24
登录 zscan exploit ssh -H 172.16.95.24 -U root -P 123123
```

</details>
<details>
<summary><b>redis модуль взлом/выполнение команд</b></summary>```
爆破 zscan blast redis -H 172.16.95.1-30
登录 zscan exploit redis -H 172.16.95.16 -c cmd
```


</details>
<details>
<summary><b>Модуль winscan: zscan scan winscan -H ip</b></summary>```
zscan scan winscan -H 172.16.95.1-33
```

</details>
<details>
<summary><b>Вызов всех модулей сканирования и взлома:zscan all -H ip</b></summary>```
zscan all -H 172.16.95.1-30
zscan all -H 172.16.95.1-30 --novulscan //不进行poc探测
```

</details>
<details>
<summary><b>модуль сканирования poc:zscan scan poc -u url</b></summary>```
zscan scan poc -l //列出所有内置poc
zscan scan poc -l --pocname weblogic //列出内置和weblogic有关的poc
zscan scan poc -u http://172.16.95.24:8080 //使用所有内置poc扫描目标
zscan scan poc -u http://172.16.95.24:8080 --pocname weblogic //只使用weblogic的poc
zscan scan poc -U http://172.16.95.24:8080 --pocpath /root/pocs //使用整个pocs目录下的poc
zscan scan poc --urlfile url.txt --pocpath /root/pocs/weblogic.yml //使用单个poc批量扫描目标
```
</details>
## Преимущества инструмента🚀
- Команды просты и удобны, вызов модулей функций прост и понятен, легко расширять и добавлять новые функции, а также удалять ненужные модули.
- Уникальное обнаружение подсетей. Если у вас есть лучший способ обнаружения, сообщите мне, добавлю 😜.
- Не просто сканер, но и интегрированный набор различных распространённых полезных функций. Встроена поддержка прокси (из-за отсутствия интерфейса в драйверах баз данных брутфорс и выполнение команд для MSSQL, Mongo и PostgreSQL не работают через прокси; если кто-то знает решение, свяжитесь со мной). Можно назвать инструментарием.
- Сканирование портов и брутфорс работают без разрывов, что значительно повышает скорость сканирования: это преимущество в полной мере проявляется в модуле `all`. Во время многопоточного сканирования портов определяется, открыт ли порт; если порт поддерживает брутфорс, немедленно в текущем потоке запускается дополнительный многопоточный брутфорс. Это значительно ускоряет процесс и исключает промежуточный шаг сбора открытых портов перед брутфорсом.
- Красивый и читаемый формат вывода: результаты выделяются цветом. Вывод происходит не только в процессе, но и по завершении сканирования формируется итоговый отчёт, где отображаются все результаты сканирования и брутфорса (см. [формат вывода в описании](https://github.com/zyylhn/zscan#简介)). Также поддерживается запись результатов в файл.
- В службах можно не только проводить брутфорс, но и выполнять команды после успешного взлома. В будущем будет добавлена функция одношагового использования.
- В разработке. Если кто-то обнаружит какие-либо проблемы или ошибки, или захочет предложить новые интересные функции, свяжитесь со мной.
## Сборка из исходников👨
Рекомендуется компилировать самостоятельно, так как в релизах иногда могут отсутствовать обновления. По некоторым причинам готовые собранные zscan в настоящее время не предоставляются. Команды для сборки приведены ниже.```
go get github.com/zyylhn/zscan
go bulid
或者docker编译
docker pull golang
docker run -v "$GOPATH":/go -v "$PWD":/go/src/zscan -w /go/src/zscan -e GOOS="darwin" -e GOARC H="amd64" golang go build -v -ldflags="-s -w" -trimpath -o zscan_mac_x64
docker run -v "$GOPATH":/go -v "$PWD":/go/src/zscan -w /go/src/zscan -e GOOS="windows" -e GOAR CH="amd64" golang go build -v -ldflags="-s -w" -trimpath -o zscan_x64.exe
docker run -v "$GOPATH":/go -v "$PWD":/go/src/zscan -w /go/src/zscan -e GOOS="linux" -e GOARCH ="amd64" golang go build -v -ldflags="-s -w" -trimpath -o zscan_linux_x64
```
## Отказ от ответственности 🧐
Этот инструмент предназначен только для **легально авторизованных** действий по обеспечению безопасности предприятия. Если вам нужно проверить его работоспособность, создайте собственную тестовую среду.
При использовании этого инструмента для проверки убедитесь, что это соответствует местным законам и нормативным актам, и что у вас есть достаточные полномочия. **Не сканируйте неавторизованные цели.**
Если в процессе использования этого инструмента вы совершаете какие-либо незаконные действия, вы несете полную ответственность за последствия. Мы не несем никакой юридической или иной ответственности.
Перед установкой и использованием этого инструмента, пожалуйста, **внимательно прочитайте и полностью поймите все положения**. Положения об ограничениях, отказе от ответственности или другие положения, затрагивающие ваши важные права, могут быть выделены жирным шрифтом, подчеркиванием и т. д.
Если вы не прочитали, не поняли и не приняли все условия настоящего соглашения, пожалуйста, не устанавливайте и не используйте этот инструмент. Ваше использование или любое другое явное или подразумеваемое принятие настоящего соглашения считается вашим прочтением и согласием с его условиями.
## Ссылки 👀
https://github.com/shadow1ng/fscan
https://github.com/k8gege/LadonGo
## Прогресс обновлений 💪
### Функциональные модули
- [x] Модуль ping: обнаружение хостов с помощью ping
- [x] Использование системного ping
- [x] Отправка ICMP-пакетов
- [x] Обнаружение сегментов внутренней сети
- [x] Ping шлюза сегмента B
- [x] OXID-сканирование
- [x] Модуль сканирования портов PS
- [x] Получение HTTP title и статуса
- [x] Идентификация HTTP отпечатков
- [x] Проверка POC HTTP
- [x] Возврат информации баннера
- [x] Сначала ping, затем сканирование
- [x] Модуль all вызывает все модули
- [x] Модуль blast
- [x] Модуль SSH
- [x] Модуль FTP
- [x] Модуль MySQL
- [x] MSSQL
- [x] Модуль MongoDB
- [x] Модуль Redis
- [x] Модуль PostgreSQL
- [x] LDAP
- [x] SMB
- [x] RDP
- [x] Модуль scan
- [x] Модуль сканирования прокси-серверов
- [x] Сканирование SOCKS5 прокси
- [x] Модуль winscan @https://github.com/shenzhibuqins
- [x] Функция сканирования SMB
- [x] Функция OXID сканирования
- [x] Функция сканирования NetBIOS
- [x] Модуль сканирования 17010
- [x] POC
- [x] Поддержка xray v1
- [ ] Поддержка xray v2
- [x] Модуль server
- [x] Модуль SOCKS-сервера
- [x] Аутентификация по имени пользователя и паролю
- [x] Модуль HTTP-сервера
- [x] Функция аутентификации
- [x] Функция загрузки файлов
- [x] Модуль tool
- [x] Модуль nc
- [x] Функция прослушивания порта
- [x] Функция подключения к порту
- [x] Функция поиска файлов
- [x] Одновременный поиск нескольких файлов, многопоточность
- [x] Поиск по регулярным выражениям
- [ ] Поиск содержимого файлов
- [ ] Функция архивирования папок
- [x] Модуль exploit
- [x] Модуль sshlogin
- [x] Вход по имени пользователя и паролю (интерактивный)
- [x] Вход с помощью ключа (интерактивный)
- [x] Модуль Redis
- [x] Выполнение команд Redis
- [x] Уязвимость побега из песочницы Lua
- [x] RCE через master-slave репликацию
- [x] Запросы LDAP
- [ ] Запросы SNMP
- [ ] Модуль WMI
- [ ] ..........
### Функции самого инструмента
- [x] Вывод результатов в файл
- [x] Логирование результатов каждого запуска
- [x] Настройка количества потоков (сканирование поддерживает очень высокое количество потоков)
- [x] Настройка таймаута
- [x] Функция прокси
- [ ] Прокси для UDP
- [x] Прокси для TCP
- [x] Прокси для брутфорса служб и выполнения команд
- [x] MySQL
- [ ] MSSQL
- [x] Redis
- [x] MongoDB
- [ ] PostgreSQL
- [x] SSH
- [x] FTP
- [x] Чтение целей из файла
- [x] Поддержка очень больших словарей для брутфорса
- [ ] ...........
### Цели на будущее
- [ ] Улучшить модули брутфорса серверов в текущей версии, добавить поддержку большего количества команд, чтобы обеспечить беспрепятственное использование команд, и добавить модули эксплуатации баз данных (использование после успешного брутфорса базы данных)
- [ ] MySQL
- [ ] MSSQL
- [ ] PostgreSQL
- [ ] MongoDB
- [ ] FTP
- [ ] Выпустить облегченную версию zscna
- [ ] Удалить все драйверы баз данных для уменьшения размера, ценой потери возможности выполнения команд
- [ ] Удалить редко используемые или бесполезные модули баз данных
Спасибо за звездочки, дружище 🥳
Приветствуются вопросы 👏
Приветствуется обмен веб-отпечатками и POC
Тем, кто любит писать инструменты на Go, присоединяйтесь к нам: [email protected] 😃