# Управление данными

**База данных**

В Kali запускаем postgresql и инициализируем базу данных. Создадутся базы msf и msf\_test.

```bash
root@kali:~# systemctl start postgresql
root@kali:~# msfdb init
```

**Управление данными**

<table border="1" id="bkmrk-db_connect-%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82" style="border-collapse: collapse; width: 100%; height: 232px;"><colgroup><col style="width: 28.0358%;"></col><col style="width: 72.0834%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">db\_status</td><td style="height: 29.8px;">Статус соединения с базой</td></tr><tr style="height: 83px;"><td style="height: 83px;">db\_connect</td><td style="height: 83px;">Подключиться к бд. Без параметров - к локальной. Может быть удаленная ```
db_connect <user:[pass]>@<host:[port]>/<database> 
```

</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">db\_disconnect</td><td style="height: 29.8px;">Отключение</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">db\_export -f &lt;format&gt; \[filename\]</td><td style="height: 29.8px;">Сохранение данных в файл. Формат xml или pwdump</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">db\_import file1 \[file2...\]</td><td style="height: 29.8px;">Импорт данных из файла. Может быть импорт в виде \*.xml, или \*\*/\*.xml</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">db\_rebuild\_cache</td><td style="height: 29.8px;">Пересчет кэша </td></tr></tbody></table>

**Рабочее пространство.** Способ организации хранения связанных данных.

<table border="1" id="bkmrk-workspace-%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA-%D0%BF%D1%80%D0%BE" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 28.2739%;"></col><col style="width: 71.8453%;"></col></colgroup><tbody><tr><td>workspace</td><td>Список пространств. \* текущее.</td></tr><tr><td>workspace -a</td><td>Создать новое</td></tr><tr><td>workspace &lt;name&gt;</td><td>Переключиться на рабочее пространство name</td></tr><tr><td>workspace -d</td><td>Удалить</td></tr></tbody></table>

**Таблицы**

<table border="1" id="bkmrk-hosts-%D0%9E%D0%B1%D0%BD%D0%B0%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5-%D1%85" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 15.8621%;"></col><col style="width: 84.1359%;"></col></colgroup><tbody><tr><td>hosts</td><td>Обнаруженные хосты. IP-адрес, MAC-адрес, имя хоста, ОС, состояние, комментарии

</td></tr><tr><td>services</td><td>Сетевые сервисы. Порт, протокол (TCP/UDP), состояние (open/closed), имя сервиса, версия</td></tr><tr><td>vulns</td><td>Уязвимости. Название, описание, ссылки, критичность, доказательства</td></tr><tr><td>notes</td><td>Дополнительная информация о хостах и сервисах. Содержит Различные данные (учетные записи, собранная информация)</td></tr><tr><td>loot</td><td>Извлеченные данные. Содержит: Хеши паролей, конфигурационные файлы, личные данные</td></tr><tr><td>creds</td><td>Учетные данные для аутентификации. Содержит: Логины, пароли, хеши, тип аутентификации</td></tr><tr><td>workspaces</td><td>Разделение проектов/задач</td></tr><tr><td>clients</td><td>Клиентские системы. Содержит: Данные о браузерах, пользовательских агентах</td></tr><tr><td>events</td><td>События. Содержит: Действия, выполняемые в рамках тестирования</td></tr><tr><td>exploited\_hosts</td><td>Успешные эксплуатации. Содержит: Данные о взломанных системах</td></tr><tr><td>sessions</td><td>Открытые сессии. Содержит: Активные соединения с скомпрометированными системами</td></tr><tr><td>web\_sites</td><td>Веб-сайты. Содержит: URL, виртуальные хосты, SSL-информация</td></tr><tr><td>web\_pages</td><td>Веб-страницы. Содержимое страниц, формы, ссылки</td></tr><tr><td>web\_forms</td><td>HTML-формы. Поля форм, методы отправки</td></tr><tr><td>web\_vulns</td><td>XSS, SQLi, и другие веб-уязвимости</td></tr></tbody></table>

**Ручное добавление данных:** сначала создать объект, затем модифицировать его.

```bash
msf > hosts -a 192.168.0.1
msf > hosts 192.168.0.1 -m "first node"
msf > hosts

Hosts
=====

address      mac  name  os_name  os_flavor  os_sp  purpose  info  comments
-------      ---  ----  -------  ---------  -----  -------  ----  --------
192.168.0.1                                                       first node
```

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

**Фильтрация**

Ключ -S &lt;term&gt; Например

```
msf > hosts -S 0.1

Hosts
=====

address      mac  name  os_name  os_flavor  os_sp  purpose  info  comments
-------      ---  ----  -------  ---------  -----  -------  ----  --------
192.168.0.1                                                       first node
```

При фильтрации важно указывать колонки -c поскольку поиск полнотекстовый.

**Использование данных**

В свойствах таблицы есть параметр, который можно использовать в инструментах/... Например, в таблице hosts есть параметр RHOSTS.

```
msf > hosts -h
...
OPTIONS:
...
    -R, --rhosts                           Set RHOSTS from the results of the search
...
```

Это означает, что в случае использования в инструментах параметра RHOSTS его можно заполнить данными из БД. Пример запуска инструмента для хостов, отфильтрованных по 127. Параметр -R добавляет данные в параметр RHOSTS.

```
msf > hosts
Hosts
=====
address      mac  name  os_name  os_flavor  os_sp  purpose  info  comments
-------      ---  ----  -------  ---------  -----  -------  ----  --------
127.0.0.1
192.168.0.1                                                       first node

msf > use auxiliary/scanner/portscan/tcp 

msf auxiliary(scanner/portscan/tcp) > show options
Module options (auxiliary/scanner/portscan/tcp):

   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   CONCURRENCY  10               yes       The number of concurrent ports to check per host
   DELAY        0                yes       The delay between connections, per thread, in milliseconds
   JITTER       0                yes       The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
   PORTS        22               yes       Ports to scan (e.g. 22-25,80,110-900)
   RHOSTS                        yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
   THREADS      1                yes       The number of concurrent threads (max one per host)
   TIMEOUT      1000             yes       The socket connect timeout in milliseconds

msf auxiliary(scanner/portscan/tcp) > hosts -c address -S 127 -R

Hosts
=====

address
-------
127.0.0.1

RHOSTS => 127.0.0.1

msf auxiliary(scanner/portscan/tcp) > show options 

Module options (auxiliary/scanner/portscan/tcp):

   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   CONCURRENCY  10               yes       The number of concurrent ports to check per host
   DELAY        0                yes       The delay between connections, per thread, in milliseconds
   JITTER       0                yes       The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
   PORTS        22               yes       Ports to scan (e.g. 22-25,80,110-900)
   RHOSTS       127.0.0.1        yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
   THREADS      1                yes       The number of concurrent threads (max one per host)
   TIMEOUT      1000             yes       The socket connect timeout in milliseconds


View the full module info with the info, or info -d command.

msf auxiliary(scanner/portscan/tcp) > run
[*] 127.0.0.1             - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
```

**Сохранение данных в CSV**

```
msf > hosts -S Linux -o /root/msfu/linux.csv
```

**Архивация и восстановление данных**

Архив:

```
# В msfconsole
db_export -f xml full_backup.xml
# или
db_export -f json full_backup.json
```

Восстановление:

```
db_import full_backup.xml
```