Skip to content

Latest commit

 

History

History
186 lines (117 loc) · 11.2 KB

17_app_configs.md

File metadata and controls

186 lines (117 loc) · 11.2 KB

Приложение 3. Конфигурационные файлы Natch

Для работы инструмента Natch требуются конфигурационные файлы. Основной конфигурационный natch.cfg файл отдается непосредственно инструменту на вход, остальные являются источниками настроек для плагинов, входящих в состав Natch.

Для каждого сценария также автоматически создаётся конфигурационный файл taint.cfg, в котором описываются правила для помеченных данных.

Ниже описаны все конфигурационные файлы, используемые Natch.

Основной конфигурационный файл natch.cfg

Все секции и параметры файла конфигурации приведены ниже.

# Natch settings

[Version]
version=6

# Section for path to work directory
[OutputData]
workdir=/home/user/workdir

# Section for loading task_struct offsets
[Tasks]
config=task.cfg

# Section for loading modules
[Modules]
config=module.cfg
log=taint_txt.log
params_log=params.log

# Natch working mode
[Mode]
light=false

# Section for enable generating graphs
[TaintedTask]
task_graph=true
module_graph=false

# Enable network logging
[NetLog]
on=true

# Section for getting coverage
[Coverage]
file=coverage.cov64
taint=true

# Section for enabling additional plugins
[Plugins]
items=bcqti,broker,addr=:5555;some_plugin

# Section for loading custom syscall config
[Syscalls]
config=custom_x86_64.cfg
attempts=50

Секция Version

  • Поле version: номер версии конфигурационного файла Natch. Генерируется автоматически, редактирование не требуется.

Секция OutputData

  • Поле workdir: путь к директории, куда будут записываться все файлы, генерируемые инструментом. Внутри workdir будут создан каталог output_<scenario_name>, в который будут записаны файлы для анализа в графической подсистеме (бинарные логи, графы взаимодействия процессов и модулей, символьная информация), этот же каталог будет заархивирован.

Секция Tasks

Секция Modules

Секция Mode

  • Поле light: принимает логическое значение, при установке в true включается облегченный режим работы Natch, по умолчанию выключен (подробнее в разделе Облегченный режим работы Natch).

Секция TaintedTask

  • Поле task_graph: принимает логическое значение, при установке в true при завершении работы эмулятора будет создан граф задач и потоков помеченных данных.
  • Поле module_graph: принимает логическое значение, при установке в true при завершении работы эмулятора будет создан граф модулей и потоков помеченных данных.

Секция NetLog

  • Поле on: принимает логическое значение, при установке в true данные о сетевом трафике и его содержимое сохраняются в файлы для дальнейшего анализа.

Секция Coverage

  • Поле file: указывается имя файла, куда будет записана операция о покрытии кода.
  • Поле taint: определяет режим сбора покрытия кода (подробнее в пункте Анализ покрытия бинарного кода).

Секция Plugins

  • Поле items: через точку с запятой указываются плагины, не входящие в состав Natch, но которые должны быть загружены.

Секция Syscalls

  • Поле config: указывается имя конфигурационного файла для перехвата системных вызовов (подробнее в пункте Конфигурационный файл для системных вызовов).
  • Поле attempts: дает возможность задать количество срабатываний системных вызовов для тюнинга. Может понадобиться уменьшить, если настройка не успевает пройти. По умолчанию 50.

Конфигурационный файл для помеченных данных taint.cfg

Содержание файла конфигурации taint.cfg приведен ниже.

[Taint]
# Threshold value for tainting. Should be in decimal number system [1..255]
threshold=255
on=true

[Ports]
# 6 is for tcp, 17 for udp
ip_protocol=6
# ports are supported for tcp only yet
dst=22;80;3500;5432
src=22;80;3500;5432

# Section for add tainted files
[TaintFile]
list=file1.txt;file2.txt

# Section for usb traffic tainting
[USB]
on=true

# Section for collecting arguments of functions
[FunctionArgs]
config=func.cfg

Секция Taint

  • Поле threshold: пороговое значение для отслеживания помеченных данных, задается десятеричным числом в диапазоне от 1 до 255. Чем больше число, тем пометка будет сильнее, то есть в поверхность атаки будут попадать минимально измененные данные.
  • Поле on: принимает логическое значение, при установке в true отслеживание помеченных данных будет включено при старте эмулятора. Если это не требуется, следует установить значение false.

Если секция Taint не определена, по умолчанию отслеживание помеченных данных будет выключено и пороговое значение будет установлено в 0.

Секция Ports

  • Поле ip_protocol описывает тип протокола 4 уровня. Если не указано, пакеты по этому полю не фильтруются.
  • Поле src - фильтр по Source Port в заголовке TCP, порты перечисляются через точку с запятой.
  • Поле dst - фильтр по Destination Port в заголовке TCP, порты перечисляются через точку с запятой.

Секция TaintFile

  • Поле list: через точку с запятой могут быть перечислены имена файлов, которые требуется пометить. Указываются имена файлов гостевой машины в формате имя + расширение. Для надежности рекомендуется не использовать пути. Пометка произойдет автоматически при запуске эмулятора.

Секция USB

  • Поле on: принимает логическое значение, при установке в true будет включено отслеживание помеченных данных. Если это не требуется, следует установить значение false.

Секция FunctionArgs

Конфигурационный файл для модулей module.cfg

Конфигурационный файл секции Modules генерируется автоматически на этапе конфигурирования Natch.

В редких случаях может потребоваться ручная доработка, подробная формация про этот файл в разделе Формат списка исполняемых модулей

Конфигурационный файл для процессов task.cfg

Конфигурационный файл секции Tasks генерируется автоматически на этапе конфигурирования Natch.

Конфигурационный файл для системных вызовов

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

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