Wetland
Wetland — это высокоинтерактивный SSH-хонипот, предназначенный для регистрации атак методом перебора. Кроме того, Wetland будет записывать оболочку, scp, sftp, exec-command, direct-forward, reverse-forward взаимодействия, выполняемые атакующим.
Wetland основан на Python-модуле SSH paramiko. И Wetland работает как многопоточный TCP-сервер с использованием SocketServer.
Возможности
- Использует Docker для предоставления реальной среды Linux.
- Вся аутентификация по паролю будет перенаправляться в Docker.
- Все команды будут выполняться в Docker.
- Сохраняет копии файлов, когда хакер загружает файлы через SFTP.
- Извлекает и сохраняет файлы из журнала выполнения, когда хакер загружает файлы через SCP.
- Предоставляет скрипт playlog для воспроизведения журналов [shell | exec | direct-forward | reverse-forward].
- Расширенная сетевая функция для подмены IP-адреса атакующего между wetland и Docker (благодаря honssh)
- Различные способы оповещения вас, когда Wetland подвергается атаке, но сейчас только email и BearyChat.
Требования
- Система Linux (протестировано на Ubuntu)
- Образы sshd в Docker (например, rastasheep/ubuntu-sshd)
- python2.7
- paramiko
- yagmail
- IPy
- requests
Установка и настройка
- Скопируйте wetland.cfg.default в wetland.cfg
- Сгенерируйте ключи, используемые SSH-сервером
- выполните
mkdir data
- выполните
ssh-keygen -t rsa и поместите их в data/
- выполните
ssh-keygen -t dsa и поместите их в data/
- Помните, что Wetland и контейнер sshd должны использовать одни и те же ключи.
- Установите зависимости Python
- выполните
pip install -r requirements
- Настройте баннер SSH-сервера
- Отредактируйте баннер в wetland.cfg
- Он должен совпадать с баннером SSH контейнера sshd
- Или вы можете выполнить
python util/initwetland.py ./; этот скрипт выполнит всю вышеперечисленную работу.
- Настройте плагины вывода в wetland.cfg
- включите или отключите в разделе
[output]
- Отредактируйте URL входящих роботов при использовании BearyChat
- Отредактируйте пользователя, пароль... при использовании email
- Установите p0f, если хотите
- выполните
git clone https://github.com/p0f/p0f
- выполните
cd p0f
- выполните
./build.sh
- Отредактируйте раздел
[p0fp0f] в wetland.cfg
- если вам не нужен p0f, просто отключите его в разделе [output]
- Установите Docker
- установите Docker согласно документации на www.docker.com
- выполните
docker search sshd, затем выберите образ, запускающий sshd
- выполните
docker run -d --name sshd sshd_image_name
- выполните
docker inspect sshd, затем отредактируйте IP-адрес и порт Docker в wetland.cfg
- SSH-порт sshd должен совпадать с портом Wetland
- иногда удаляйте и заменяйте контейнер sshd, если хотите
Запуск
- Запуск
- выполните
nohup python main.py &
- Остановка
- выполните
netstat -autpn | grep 22
- затем
kill pid_number
- ахаха
- Очистка
- Возможно, вам придётся вручную удалить некоторые интерфейсы, созданные сетевым модулем.
- выполните
ip link list
- затем
ip link del dev wdxxxxxx
- в конце очистите NAT-таблицу iptables или просто перезагрузите систему
- Просмотр журналов
- выполните
python util/clearlog.py -p log; это удалит журналы, содержащие только pwd.log, а имена пользователей и пароли будут записаны в файл -l, по умолчанию ./pwd.txt
- затем используйте playlog.py в util
- Изменения файловой системы
- filechange.py скопирует read-write слой контейнера sshd в ./; этот слой содержит то, что хакер создал и удалил
- например:
docker inspect sshd --format '{{.Id}}' | python filechange.py -
Wetland в Docker
- выполните
docker pull ohmyadd/wetland
- смотрите на Docker Hub
TODO
- контейнеризация wetland
- создать реалистичный Docker-образ sshd
- автоматизировать создание контейнера sshd
- добавить watchdog
- использовать входящие/исходящие сообщения BearyChat
- распределённая система журналирования и поддержка hpfeeds