Для работы инструмента Natch требуются конфигурационные файлы. Основной конфигурационный natch.cfg
файл отдается непосредственно инструменту на вход,
остальные являются источниками настроек для плагинов, входящих в состав Natch.
Для каждого сценария также автоматически создаётся конфигурационный файл taint.cfg, в котором описываются правила для помеченных данных.
Ниже описаны все конфигурационные файлы, используемые Natch.
Все секции и параметры файла конфигурации приведены ниже.
# 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
- Поле config: указывается имя конфигурационного файла для распознавания процессов (подробнее в пункте Конфигурационный файл для процессов).
Секция Modules
- Поле config: указывается имя конфигурационного файла для распознавания модулей (подробнее в пункте Конфигурационный файл для модулей).
- Полe log: содержит название файла, в который в процессе работы будет записываться подробный лог помеченных данных (подробнее в разделе Подробная трасса помеченных данных).
- Полe params_log: содержит название файла, в который в процессе работы будет записываться лог с помеченными параметрами функций (подробнее в разделе Получение областей помеченной памяти для функций).
Секция 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]
# 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
- Поле config: указывается имя конфигурационного файла, содержащее описание функций (подробнее в пункте Получение аргументов вызываемых функций).
Конфигурационный файл секции Modules генерируется автоматически на этапе конфигурирования Natch.
В редких случаях может потребоваться ручная доработка, подробная формация про этот файл в разделе Формат списка исполняемых модулей
Конфигурационный файл секции Tasks генерируется автоматически на этапе конфигурирования Natch.
Конфигурационные файлы для перехвата системных вызовов поставляются с инструментом и, как правило, подгружаются автоматически.
В редких случаях следует указывать конкретный файл, но писать самостоятельно его не нужно, лучше обратиться к разработчикам.