Статья Kali Linux Server - Upgrade и автоматизация

Приветствую, гостей и постояльцев форума! Эта статья будет посвящена созданию, скажем так, сервера, на борту ноутбука с ОС Kali Linux 2018.1, который будет готов включиться в нужный момент, выполнить все необходимые задачи, сохранить результаты работы в виде отчетов в личном облаке, ну и так, по мелочи.

1522870719860.png


Подключаться мы будем к нему с планшета/смартфона как по SSH так и к web-интерфейсам нужных инструментов.

В руки мне попался ноутбук с подходящими характеристиками:
  • 8 GB RAM
  • 500 GB HDD
  • Intel Core i5
  • 2 GB Video Card (Но брутить на ней я не собираюсь, так, что этот параметр роли для меня не играет.)
Вот, на базе такого ноутбука и хочу собрать полнофункциональную рабочую станцию, обвесив ее всевозможными плюшками.

Система, установленная c нуля – Kali Linux 2018.1 Full Update.

Для начала, я хочу настроить WakeOnLAN чтобы включать Kali по расписанию cron или командой, подключившись к домашней Raspberry, которая находится в одной сети с Kali.

Для этого будет использоваться утилита Ethtool.

Код:
apt install ethtool

После установки и аппаратной активации Wake On LAN также необходимо активировать в программном обеспечении.

Заменим eth0 на имя вашего сетевого интерфейса:

Код:
ethtool -s eth0 wol g

Это можно автоматизировать с помощью записи в /etc/network/interfaces:

Код:
iface eth0 inet dhcp
post-up /sbin/ethtool -s $IFACE wol g
post-down /sbin/ethtool -s $IFACE wol g

1522870820261.png


Это запускает Ethtool после каждого подъёма интерфейса eth0, а также после его отключения, таким образом, WOL должен работать даже в случае, когда сеть отключена некорректно.

Проверяем, все работает, как и ожидалось:

1522870835169.png


У Kali Linux есть одна особенность, засыпание спустя 10 мин (теряется только SSH), хотя в Power Manager все настроено корректно. В общем, чтобы не терять сессию, можно поступить так:

Код:
systemctl mask sleep.target

Теперь можно, установить что-то для сканирования сетей и хостов, мой приоритет не консольный nmap, а web-ориентированное приложение на сервере.

1522870882446.png


Таковым является Rainmap Lite - адаптивное веб-приложение, которое позволяет пользователям запускать Nmap-сканирование с мобильных телефонов / планшетов / веб-браузеров.

Функционал и особенности:
  • Простота запуска Nmap-сканирования в несколько кликов.
  • Отзывчивый интерфейс работает плавно с вашего телефона / планшета.
  • Отчеты, отправленные по электронной почте, во всех форматах.
  • Просмотр отчетов из веб-браузера.
  • Расписание сканирования.
  • Десятки профилей сканирования на выбор.
  • Простота установки / настройки.
  • Возможность поделиться результатами с вашей командой.
Rainmap-lite не требует специальных сервисов (RabbitMQ, PostgreSQL, Celery, supervisor и т. Д.), Чтобы упростить установку на любом сервере, вам нужно установить приложение Django и добавить задачу опроса cron для настройки нового сервера сканирования.

Установка:

Код:
pip install django
pip install lxml
git clone https://github.com/cldrn/rainmap-lite
cd /home/Pentest/rainmap-lite/rainmap-lite

1522870923631.png


Внесем необходимые изменения в конфигурационный файл nmaper-cronjob.py:

Код:
nano nmaper-cronjob.py

1522870951494.png

  • Здесь необходимо указать данные ящика, с которого вы будете получать уведомления. Google не пропустил подобные отчеты, поэтому я поднял собственный почтовый сервер на iRedmail.
Это можно сделать, если нужно формировать отчеты сканирования, для пересылки Вам на почту, а так же меняем localhost на адрес, выданный DHCP – сервером, Kali.

Создаем схему базы данных:

Код:
python manage.py migrate

Подгружаем дефолтные профили сканирования:

Код:
python manage.py loaddata nmapprofiles

Редактируем cron для периодического опроса:

Код:
crontab –e

Добавляем:

Код:
*/5 * * * * cd <App path> && /usr/bin/python nmaper-cronjob.py >> /var/log/nmaper.log 2>&1

Теперь необходимо добавить свой роутер (у меня статический IP) в доверенные хосты для Django, иначе не получится заходить с произвольного устройства на web интерфейс сканера.

Код:
nano /usr/local/lib/python2.7/dist-packades/jango/http/request.py

И добавляем нужные хосты в Allowed Hosts:

1522871083788.png


Теперь можно создать пользователя для Rainmap:

Код:
python manage.py createsuperuser

1522871111815.png


Запускаем Rainmap, т.к. по DHCP Kali имеет адрес 192.168.0.101 на нем, и поднимаем сервер:

Код:
python manage.py runserver 192.168.0.101:8080

1522871141774.png


Обратившись (и указав учетные данные) по указанному адресу к серверу, мы попадаем в главное меню сканера:

1522871183018.png


К его работе претензий нет, множество профилей сканирования, и отчеты на почту в таком виде:

1522871197702.png

Скачиваем их на свое облако, или смотрим онлайн:

1522871210488.png


Это, на мой взгляд, удобнее просмотра результатов, в консоли мобильного SSH – клиента.

1522871225001.png



Следующим шагом, будет установка облачного хранилища, выбор пал на ownCloud.

ownCloud — это свободное и открытое веб-приложение для синхронизации данных, общего доступа к файлам и удалённого хранения документов в «облаке».

Создаем базу данных и пользователя, для нашего будущего облака:

Код:
mysql -u root –p
create database owncloud;
create user owncloud@localhost identified by 'passwd';
grant all privileges on owncloud.* to owncloud@localhost identified by 'passwd';
flush privileges;
exit;

1522871269791.png


Устанавливаем необходимые зависимости:

Код:
apt install -y apache2 mariadb-server libapache2-mod-php7.0 php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-intl php7.0-mcrypt php-imagick php7.0-zip php7.0-xml php7.0-mbstring

1522871304438.png


Скачиваем последнюю актуальную версию:

Код:
cd /tmp
wget https://download.owncloud.org/community/owncloud-10.0.7.tar.bz2

Распаковываем и меняем разрешения:

Код:
tar -xvf owncloud-10.0.2.tar.bz2
chown -R www-data:www-data owncloud

После установки, появится папка owncloud, переместим ее:

Код:
mv owncloud /var/www/html/

Конфигурируем Apache:

Создаем новый файл конфигурации:

Код:
nano /etc/apache2/sites-available/owncloud.conf

И копируем в него следующие строки:

Alias /owncloud "/var/www/html/owncloud/"

<Directory /var/www/html/owncloud/>

Options +FollowSymlinks

AllowOverride All

<IfModule mod_dav.c>

Dav off

</IfModule>

SetEnv HOME /var/www/html/owncloud

SetEnv HTTP_HOME /var/www/html/owncloud

</Directory>

Создаем симлинк:

Код:
ln -s /etc/apache2/sites-available/owncloud.conf /etc/apache2/sites-enabled/owncloud.conf

Дополнительно конфигурируем Apache, следующими командами:

Код:
a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime

1522871677002.png


Теперь, можно проверять работу облака обратившись к нему по адресу:

Код:
http://yourIP/owncloud

1522871707328.png


Последнее, что необходимо сделать – это подключится к базе данных, введя имя пользователя, пароль и имя базы в веб интерфейсе облака. На этом, настройку облачного хранилища можно считать законченной.

1522871721860.png


Следующее, что можно сделать, это установить более продвинутый сканер уязвимостей:

Archery - это инструмент для анализа и управления уязвимостями, с открытым исходным кодом, который помогает разработчикам и пентестерам выполнять комплексное сканирование хостов и приложений.

Archery - использует популярные инструменты для анализа, и выполняет динамическое сканирование с использованием веб-приложений и поддерживает все приложения использующие selenium.

Selenium - это инструмент для автоматизированного управления браузерами. Наиболее популярной областью применения Selenium является автоматизация тестирования веб-приложений.

Разработчики могут также использовать инструмент для реализации своей среды DevOps CI / CD.

Принцип работы Archery:

1522871742854.png

Особенности Archery:
  • Сканирование уязвимостей в сети с помощью инструментов open-source.
  • Корреляция и поддержка со всеми необработанными данными сканирования, демонстрация их в консолидированном виде.
  • Выполнение проверок подлинности в Интернете.
  • Выполнение сканирования веб-приложений с использованием selenium.
  • Управление уязвимостями.
  • Включение REST API для разработчиков с целью выполнения сканирования и управления уязвимостями.
  • Использование DevOps командами, для управления уязвимостями.
Зависимости:
  • Python 2.7
  • OpenVas 8
  • OWASP ZAP 2.7.0
  • Selenium Python Firefox Web driver
Установка:

Для начала, устанавливаем OWASP ZAP 2.7.0.

Open Web Application Security Project (OWASP) — это открытый проект обеспечения безопасности веб-приложений.

OWASP ZAP - это простой в применении встроенный инструмент тестирования проникновений, служащий для нахождения уязвимостей веб-приложений. Он разработан для использования людьми с различным опытом в сфере безопасности и является эталоном для разработчиков и тестировщиков функционала, которые не имеют опыта в тестировании проникновений.

Код:
wget https://github.com/zaproxy/zaproxy/wiki/Downloads
chmod +x ZAP_2_7_0_unix.sh
./ZAP_2_7_0_unix.sh

После окончания установки клонируем Archery с Github:

Код:
git clone https://github.com/archerysec/archerysec
cd /archerysec
pip install -r requirements.txt

1522871818186.png


Загружаем статические файлы:

Код:
python manage.py collectstatic

Макетирование всех моделей приложений сетевых сканеров:

Код:
python manage.py makemigrations networkscanners

Макетирование всех моделей приложений веб-сканеров:

Код:
python manage.py makemigrations webscanners

Макетирование всех моделей приложений:

Код:
python manage.py makemigrations projects

Перенос всех данных:

Код:
python manage.py migrate

Теперь вам нужно создать учетные данные приложения:

Код:
python manage.py createsuperuser

Запускаем Archery:

Код:
python manage.py runserver 192.168.0.101:8088

Здесь выбираем типы сканирования, виды сканеров и т.д:

1522871991949.png


Вся дополнительная информация о сканере Archery, а ее много и расписывать, смысла нет, доступна тут:
На этом настройка Archery закончена.

1522872029260.png


Следующее, что мне хотелось бы видеть на своем сервере – это SpiderFoot.

SpiderFoot - это инструмент с открытым исходным кодом для проведения полностью автоматизированной разведки.

Его цель - автоматизировать процесс сбора информации о заданной цели, которая может быть представлена IP-адресом, доменным именем, именем хоста или подсетью.

Он схож по функционалу с Maltego, но в качестве плюса, использует web – интерфейс для управления.

Установка:

Скачиваем SpiderFoot с официального сайта разработчиков:

1522872063720.png


Код:
tar zxvf spiderfoot-X.X.X-src.tar.gz

1522872091303.png


Запуск SpiderFoot:

Для того чтобы использовать SpiderFoot извне, необходимо в файле sf.py заменить localhost на адрес Kali выданный ей роутером:

Код:
nano sf.py

1522872120053.png


Затем пробросить порт на роутере и установить необходимые зависимости:

Код:
pip install –r requirements.txt

1522872153753.png


Код:
cd spiderfoot-X.X.X
ls –a
./sf.py

Обратившись по указанному адресу и порту, попадаем в панель управления SpiderFoot:

1522872183016.png


В отличие от именитого конкурента Maltego, SpiderFoot полностью бесплатный и намного более полезен, поскольку способен собрать информации больше на несколько порядков.

Некоторые сервисы требуют наличия API ключей (даются бесплатно при регистрации), об этих сервисах и о получении API ключей написано на странице документации:

Добавлю от себя, сканер реально полезный и удобный, отчеты подробные и очень информативные. Возможность обратиться к нему из любой точки, очень облегчает многие задачи.

1522872204618.png




1522872211324.png


Последнее, что мне нужно, это добавить к Kali VNC сервер, иногда он необходим:
Установка:

Код:
apt install tightvncserver
apt install autocutsel

1522872250636.png


Запуск:

Код:
vncserver: 1

При первом запуске vncserver запрашивается пароль (8 символов).

1522872281731.png


Мы можем проверить, работает ли VNC сервер, выдав команду netstat -tupln:

1522872299710.png


Подключаемся к VNC с любого VNC клиента, как с мобильного, так и стационарного:

Для подключения извне, как обычно нужно пробросить порт на роутере.

1522872440633.png

Еще, в довесок ко всему, мне нужен FTP сервер, тут все очень просто:
  • apt-get install vsftpd
По настройке и защите FTP сервера, в сети мануалов достаточно, заострять внимание на этом не буду.

Запустим FTP сервис:

Код:
systemctl start vsftpd.service

Затем попробуем присоединиться к нему любым FTP клиентом:

1522872551191.png


Все работает, как в пределах локальной сети, так и за её пределами.

Проброс портов выглядит примерно так:

1522872615958.png


Собственно, на этом все, все сервера работают, порты проброшены, а в закладках на планшете и телефоне установлены адреса сервисов, чтобы в любой момент к ним можно было подключиться.

Ну и написан пару строчный bash – скрипт, который запускает все сервисы разом. Это уже по мере необходимости.

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

Специально для Codeby.net.
 

Night Hunter

Green Team
13.01.2018
284
284
BIT
0
@Vander спасибо за статью, интересная и полезная. Вопрос, модули для OwnCloud, которые в маркете, для корпоративной версии,можно бесплатно достать?
 
H

HABb

Статья хорошая, один вопрос: ownCloud стабильно работает?
 

Vander

CodebyTeam
Gold Team
16.01.2016
1 420
4 353
BIT
2
Статья хорошая, один вопрос: ownCloud стабильно работает?
Тоже думал, что будет с косяками, но реально стабильно все. Конечно, опасаюсь важные данные закидывать пока, но в целом довольно неплохо.
Сейчас с видеонаблюдением вопрос стал... motion не хочет работать, а zoneminder с зависимостями проблемы...
 
  • Нравится
Реакции: ILionI

woolf1514

Green Team
06.03.2017
181
191
BIT
5
Отлично! Давно задался вопросом сервера на kali.. А тут столько нового, спасибо!
 
O

omar_23

блин чувак я уперся в установку зависимостей для облака
Построение дерева зависимостей
Чтение информации о состоянии… Готово
E: Невозможно найти пакет libapache2-mod-php7.0
E: Не удалось найти ни один пакет с помощью шаблона «libapache2-mod-php7.0»
E: Не удалось найти ни один пакет с помощью регулярного выражения «libapache2-mod-php7.0»
E: Невозможно найти пакет php7.0-gd
E: Не удалось найти ни один пакет с помощью шаблона «php7.0-gd»
E: Не удалось найти ни один пакет с помощью регулярного выражения «php7.0-gd»
E: Невозможно найти пакет php7.0-json
E: Не удалось найти ни один пакет с помощью шаблона «php7.0-json»
E: Не удалось найти ни один пакет с помощью регулярного выражения «php7.0-json»
E: Невозможно найти пакет php7.0-mysql
E: Не удалось найти ни один пакет с помощью шаблона «php7.0-mysql»
E: Не удалось найти ни один пакет с помощью регулярного выражения «php7.0-mysql»
E: Невозможно найти пакет php7.0-curl
E: Не удалось найти ни один пакет с помощью шаблона «php7.0-curl»
E: Не удалось найти ни один пакет с помощью регулярного выражения «php7.0-curl»
E: Невозможно найти пакет php7.0-intl
E: Не удалось найти ни один пакет с помощью шаблона «php7.0-intl»
E: Не удалось найти ни один пакет с помощью регулярного выражения «php7.0-intl»
E: Невозможно найти пакет php7.0-mcrypt
E: Не удалось найти ни один пакет с помощью шаблона «php7.0-mcrypt»
E: Не удалось найти ни один пакет с помощью регулярного выражения «php7.0-mcrypt»
E: Невозможно найти пакет php7.0-zip
E: Не удалось найти ни один пакет с помощью шаблона «php7.0-zip»
E: Не удалось найти ни один пакет с помощью регулярного выражения «php7.0-zip»
E: Невозможно найти пакет php7.0-xml
E: Не удалось найти ни один пакет с помощью шаблона «php7.0-xml»
E: Не удалось найти ни один пакет с помощью регулярного выражения «php7.0-xml»
E: Невозможно найти пакет php7.0-mbstring
E: Не удалось найти ни один пакет с помощью шаблона «php7.0-mbstring»
E: Не удалось найти ни один пакет с помощью регулярного выражения «php7.0-mbstring»
не могу решить мб подскажешь
 
Последнее редактирование модератором:

Vander

CodebyTeam
Gold Team
16.01.2016
1 420
4 353
BIT
2
Как выглядит команда, которую выполняешь?
 
O

omar_23

блин все перелопатил на этот застрял
root@kalilen:~# apt install -y php7.0-curl
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Некоторые пакеты не могут быть установлены. Возможно, то, что вы просите,
неосуществимо, или же вы используете нестабильную версию дистрибутива, где
запрошенные вами пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, вам поможет:

Следующие пакеты имеют неудовлетворённые зависимости:
php7.0-curl : Зависит: libcurl3 (>= 7.18.0) но он не может быть установлен
E: Невозможно исправить ошибки: у вас зафиксированы сломанные пакеты.

остальное вроде поставил кое как
 
Мы в соцсетях:

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