-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Kulikov Nikolay
committed
Apr 9, 2024
1 parent
e24b3dc
commit cc47c93
Showing
5 changed files
with
609 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
# Дамп трафика с нескольких Linux хостов | ||
|
||
Инструмент предназначен для возможности снимать dump трафика с нескольких Linux-хостов в реальном времени одновременно через ssh и получать их в одном окне Wireshark. Для этого используется конвертация в формат pcapng посредством dumpcap(часть пакета Wireshark, не требуется доустанавливать). | ||
|
||
## Installation | ||
--- | ||
Для компиляции или запуска нужен Golang. Можно просто запустить: | ||
``` | ||
go run multipleDump.go | ||
``` | ||
Или скомпилировать. Для удобства компиляции можно использовать скрипт build_win_linux_macos.sh. Далее для работы использовать бинарный файл и конфиг hosts.conf. **Версия Wireshark при этом должна быть не менее 3.6**. | ||
|
||
## Примеры конфигурации | ||
--- | ||
|
||
В файле hosts.conf в формате json находится конфиг. Содержит пути для бинарников Wireshark в разных ОС(Windows, MacOS, для Linux путь не нужен). | ||
|
||
Далее массив элементов каждый из которых представляет собой набор настроек для доступа по SSH на один Linux-хост, а так же параметры запуска tcpdump на удаленном хосте. | ||
Пример одного элемента | ||
|
||
``` | ||
{ | ||
"UserHost":"[email protected]", | ||
"HostPort":"-p 21059", | ||
"Key":"-i $HOME/.ssh/id_rsa.priv", | ||
"Interface":"any", | ||
"PcapFilter":"not tcp port ssh and host 10.1.1.1", | ||
"Timeout":"100" | ||
} | ||
``` | ||
Все настройки в том формате в которых их ожидает стандартный ssh-клиент и tcpdump. То есть поля UserHost, HostPort, Key это ключи которые необходимо передать стандартному ssh-клиенту на вашей рабочей машине чтобы зайти на удаленный хост. Если какой то из параметров вам не нужен то заменяем его значение на пробел. | ||
PcapFilter, Interface - параметры для запуска tcpdump на удаленном хосте. | ||
|
||
**В параметрах ssh можно писать разные конструкции имея ввиду что это всего лишь параметры для команды ssh.** То есть если такой параметр примет ssh, то и в конфиг его можно вставлять в таком же формате. | ||
Пример: | ||
``` | ||
{ "UserHost":"-J [email protected] [email protected]", | ||
"HostPort":"-p 22", | ||
"Key":"-i C:\\work\\keys\\key_pass\\ssh_key.priv", | ||
"Interface":"eth2", | ||
"PcapFilter":"host 8.8.8.8", | ||
"Timeout":"100" | ||
} | ||
``` | ||
|
||
|
||
**Следующий пример.** Если у вас параметры подключения к хосту расписаны в конфиге ssh-клиента(например для unix-like os это в ~/.ssh/config) например так: | ||
|
||
``` | ||
Host JumpHost | ||
IdentityFile /Users/user/.ssh/id_rsa.priv | ||
Hostname 10.2.2.2 | ||
User user.my | ||
Host host1 | ||
IdentityFile /Users/user/.ssh/id_rsa.priv | ||
ProxyJump JumpHost | ||
Hostname 10.10.10.10 | ||
User user.my | ||
``` | ||
|
||
и вам надо снять дамп с хоста host1, то в конфиге в параметре UserHost пишем просто название хоста из конфига ssh. То есть: | ||
|
||
``` | ||
{ | ||
"UserHost":"host1", | ||
"HostPort":" ", | ||
"Key":" ", | ||
"Interface":"eth2", | ||
"PcapFilter":"host 8.8.8.8", | ||
"Timeout":"100" | ||
} | ||
``` | ||
В параметры HostPort и Key вставляем пробелы. | ||
|
||
## Параметры | ||
--- | ||
|
||
**UserHost** - пользователь@хост (параметр ssh) | ||
|
||
**HostPort** - параметр ssh для указания порта(обязательно с -p. Параметр ssh) | ||
|
||
**Key** - путь к закрытому ключу по которому Linux-хост нас пускает(обязательно с -i. Параметр ssh) | ||
|
||
**Interface** - имя интерфейса с которого снимается дамп(это параметр команды tcpdump на удаленном хосте) | ||
|
||
**PcapFilter** - фильтр который передается команде tcpdump | ||
|
||
**Timeout** - для безопасности на удаленном хосте tcpdump запускается с командой timeout, чтобы в случае каких то поломок/отвалов подключения он не остался висеть в процессах вечно. Можно поставить и 0, но надо понимать этот риск. | ||
|
||
## Запуск бинарного файла | ||
--- | ||
MAC(после компиляции): | ||
``` | ||
./multipleDump.bin.Macos | ||
``` | ||
Windows: | ||
``` | ||
.\multipleDump.exe | ||
``` | ||
Linux: | ||
``` | ||
./multipleDump.bin.Linux | ||
``` | ||
|
||
Wireshark запустится автоматически, для чего в начале конфига указаны пути до его бинарных файлов. В пути для бинарника не вашей операционной системы можно поставить просто пробел. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
#!/bin/bash | ||
|
||
GOOS=windows GOARCH=amd64 go build -o multipleDump.exe multipleDump.go | ||
GOOS=darwin GOARCH=amd64 go build -o multipleDump.bin.Macos multipleDump.go | ||
GOOS=linux GOARCH=amd64 go build -o multipleDump.bin.Linux multipleDump.go |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
module MultipleDumps | ||
|
||
go 1.19 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
{ | ||
"WindowsWireshark":"C:\\Program Files\\Wireshark\\Wireshark.exe", | ||
"MacOSWireshark":"/Applications/Wireshark.app/Contents/MacOS/Wireshark", | ||
"Hosts":[ | ||
{ | ||
"UserHost":"[email protected]", | ||
"HostPort":"-p 22", | ||
"_Key":"path to ssh key file", | ||
"Key":"-i /home/user/.ssh/id_rsa.priv", | ||
"Interface":"any", | ||
"_PcapFilter":"pcap expression for tcpdump", | ||
"PcapFilter":"host 1.1.1.1", | ||
"_Timeout":"for timeout command on remote host", | ||
"Timeout":"60" | ||
}, | ||
{ | ||
"_UserHost":"if you have auth settings in your ~/.ssh/config - just use hostname", | ||
"UserHost":"host1", | ||
"_HostPort":"use spaces if you have settings in your ~/.ssh/config", | ||
"HostPort":" ", | ||
"_Key":" ", | ||
"Key":" ", | ||
"_Interface":"you can use different interface for each host", | ||
"Interface":"eth1", | ||
"PcapFilter":"host 8.8.8.8", | ||
"Timeout":"60" | ||
}, | ||
{ | ||
"UserHost":"host2", | ||
"HostPort":" ", | ||
"Key":" ", | ||
"Interface":"tunnel.5", | ||
"PcapFilter":"host 4.2.2.2", | ||
"Timeout":"99" | ||
} | ||
] | ||
} |
Oops, something went wrong.