Файл: Paul Troncone and Carl AlbingCybersecurity Ops with bashAttack, Defend, and Analyze from the.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.01.2024
Просмотров: 469
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Глава 6. Обработка данных 105
Опция -P доступна не во всех версиях команды grep, в частности недоступна в macOS.
Чтобы.удалить.открывающие.и.закрывающие.теги.XML.и.извлечь.содержимое,.
можно.направить.вывод.в.команду.
sed
:
$ grep -Po '
Paul
Carl
Выражение.
sed
.можно.описать.как.
s/expr/other/
..Оно.указывает.заменить.(или.
выполнить.подстановку).выражение.(
expr
).чем-то.другим.(
other
)..Выражение.
может.быть.задано.буквенными.символами.или.более.сложным.регулярным.вы- ражением..Если.выражение.не.имеет.другой.части,.такой.как.
s/expr//
,.то.оно.за- меняет.все,.что.соответствует.регулярному.выражению,.пустыми.символами,.по.
существу.удаляя.его..Шаблон.регулярного.выражения,.которое.мы.используем.
в.предыдущем.примере,.а.именно.выражение.
<[^>]
*>
,.немного.сбивает.с.толку,.
поэтому.разберем.его.
<
.—.шаблон.начинается.с.литерала.
<
[^>]*
.—.символом.
*
.обозначает.ноль.или.более.символов.из.набора.символов.
внутри.скобок..Первый.символ.—.
^
,.что.означает:.нет.любого.из.оставшихся.
символов.в.списке..Далее.следует.одиночный.символ.
>
,.поэтому.
[^
>]
.соответ- ствует.любому.символу,.который.не.равен.
>
>
.—.шаблон.заканчивается.литералом.
>
Шаблон.будет.соответствовать.одиночному.XML-тегу,.который.открывается.сим- волом.
<
.и.закрывается.символом.
>
,.но.не.более.того.
Обработка JSON
JavaScript.Object.Notation.(JSON).—.это.еще.один.популярный.формат.файлов,.
используемый,.в.частности,.для.обмена.данными.через.программные.интерфейсы.
приложения.(API)..JSON-файл.состоит.из.объектов,.массивов.и.пар.«имя/значе- ние»..В.примере.6.9.приведен.образец.JSON-файла.
Пример 6.9. book.json
{
"title": "Cybersecurity Ops with bash",
106 Часть II • Защитные операции с использованием bash
"edition": 1,
"authors": [
{
"firstName": "Paul",
"lastName": "Troncone"
},
{
"firstName": "Carl",
"lastName": "Albing"
}
]
}
.Это.объект..Объекты.начинаются.с.символа.
{
.и.заканчиваются.символом.
}
.Пара.«имя/значение»..Значениями.могут.быть.строка,.число,.массив,.логическое.
значение.или.
null
.Это.массив..Массивы.начинаются.с.символа.
[
.и.заканчиваются.символом.
]
Для получения дополнительной информации о формате JSON посетите веб- страницу http://json.org/.
При.обработке.JSON,.вероятно,.потребуется.извлечь.пары.«ключ/значение»,.что.
можно.сделать.с.помощью.команды.
grep
..Для.извлечения.пары.«ключ/значение».
firstName
.из.
book.json
.выполните.следующую.команду:
$ grep -o '"firstName": ".*"' book.json
"firstName": "Paul"
"firstName": "Carl"
Параметр.
-o
.используется.для.возврата.только.тех.символов,.которые.соответству- ют.шаблону,.а.не.всей.строке.файла.
Если.вы.хотите.удалить.ключ.и.вывести.только.значение,.можете.передать.вы- вод.команде.
cut
,.а.затем.с.помощью.команды.
tr
.извлечь.второе.поле.и.удалить.
кавычки:
$ grep -o '"firstName": ".*"' book.json | cut -d " " -f2 | tr -d '\"'
Paul
Carl
Мы.выполним.более.сложную.обработку.JSON.в.главе.11.
Глава 6. Обработка данных 107
JQ
jq
.—.это.мощный.легкий.язык.и.JSON-анализатор,.предназначенный.для.командной.
строки.Linux..Но.по.умолчанию.он.в.большинстве.версий.Linux.не.установлен.
Чтобы.с.помощью.
jq
.получить.ключ.заголовка.
book.json
,.выполните.следующее:
$ jq '.title' book.json
"Cybersecurity Ops with bash"
Для.перечисления.имен.всех.авторов.введите.такую.команду:
$ jq '.authors[].firstName' book.json
"Paul"
"Carl"
Поскольку.имена.авторов.представляют.собой.массив.JSON,.при.обращении.к.нему.
необходимо. добавить.
[]
.. Для. доступа. к. определенному. элементу. массива. исполь- зуйте.индекс,.начиная.с.позиции.0.(
[0]
.для.доступа.к.первому.элементу.массива)..
Для.доступа.ко.всем.элементам.массива.укажите.
[]
.без.индекса.
Для.получения.дополнительной.информации.о.
jq
.посетите.сайт.
http://bit.ly/2HJ2SzA
Агрегирование данных
Данные.часто.собираются.из.различных.источников,.а.также.из.различных.фай- лов,.сохраненных.в.разных.форматах..Прежде.чем.вы.сможете.проанализировать.
данные,.вы.должны.собрать.их.в.определенном.месте.и.в.формате,.позволяющем.
провести.анализ.
Предположим,.вы.хотите.найти.в.хранилище.файлов.любой.системы.данные.с.име- нем.
ProductionWebServer
..Напомним,.что.в.предыдущих.сценариях.мы.упаковы- вали.собранные.данные.в.теги.XML.в.следующем.формате:.
Во.время.сбора.информации.мы.давали.имена.нашим.файлам,.используя.имя.хоста..
Теперь.вы.можете.указать.любой.из.этих.атрибутов,.чтобы.найти.и.объединить.
данные.в.одном.месте:
find /data -type f -exec grep '{}' -e 'ProductionWebServer' \;
-exec cat '{}' >> ProductionWebServerAgg.txt \;
Команда.
find
/data
-type f
.выводит.список.всех.файлов.в.каталоге.
/data
.и.его.под- каталогах..Для.каждого.найденного.файла.запускается.команда.
grep
,.чтобы.найти.
108 Часть II • Защитные операции с использованием bash строку.
ProductionWebServer
..Если.в.файле.такая.строка.найдена,.он.добавляется.
(
>>
).к.файлу.
ProductionWebServerAgg.txt
..Замените.команду.
cat
.командой.
cp и.укажите.каталог,.в.который.будут.копироваться.все.файлы,.вместо.того.чтобы.
добавляться.в.один.файл.
Можно.также.использовать.команду.
join
,.чтобы.взять.данные,.расположенные.
в.двух.файлах,.и.объединить.их.в.один..Рассмотрим.два.файла.(примеры.6.10.и.6.11).
Пример 6.10. ips.txt ip,OS
10.0.4.2,Windows 8 10.0.4.35,Ubuntu 16 10.0.4.107,macOS
10.0.4.145,macOS
Пример 6.11. user.txt user,ip jdoe,10.0.4.2
jsmith,10.0.4.35
msmith,10.0.4.107
tjones,10.0.4.145
В.файлах.повторяется.общий.столбец.данных,.который.представляет.собой.IP- адреса,.и.их.можно.объединить.с.помощью.команды.
join
:
$ join -t, -2 2 ips.txt user.txt ip,OS,user
10.0.4.2,Windows 8,jdoe
10.0.4.35,Ubuntu 16,jsmith
10.0.4.107,macOS,msmith
10.0.4.145,macOS,tjones
Опция.
-t,
.указывает.на.то,.что.столбцы.разделяются.запятой;.по.умолчанию.раз- делителем.будет.пробел.
Опция.
-2 2
.указывает.команде.
join
.использовать.для.выполнения.слияния.второй.
столбец.данных.во.втором.файле.(
user.txt
)..По.умолчанию.в.качестве.ключа.
join использует.первое.поле,.которое.соответствует.первому.файлу.(
ips.txt
)..При.не- обходимости.объединения.по.другому.полю.в.
ips.txt
.следует.добавить.опцию.
-1
n
,.
где.
n
.заменяется.соответствующим.номером.столбца.
Чтобы можно было воспользоваться командой join, оба файла должны быть отсор- тированы по столбцу, который будет использоваться для выполнения слияния.
Для этого можно применить команду сортировки, которая рассматривается в главе 7.
Глава 6. Обработка данных 109
Выводы
В.этой.главе.рассматриваются.способы.обработки.универсальных.форматов.дан- ных,.в.числе.которых.CSV,.JSON.и.XML..Подавляющее.большинство.данных,.ко- торые.вы.собираете.и.обрабатываете,.будут.находиться.в.одном.из.этих.форматов.
В.следующей.главе.мы.поговорим.о.том,.как.эти.данные.можно.проанализировать.
и.преобразовать.в.информацию,.которая.позволит.получить.представление.о.со- стоянии.системы,.чтобы.управлять.процессом.принятия.решений.
Упражнения
1.. В.отношении.следующего.файла.
tasks.txt
.используйте.команду.
cut
,.чтобы.
извлечь.столбцы.1.(
Image
Name
),.2.(
PID
).и.5.(
Mem
Usage
):
Image Name;PID;Session Name;Session#;Mem Usage
System Idle Process;0;Services;0;4 K
System;4;Services;0;2,140 K
smss.exe;340;Services;0;1,060 K
csrss.exe;528;Services;0;4,756 K
2.. Для.файла.
procowner.txt
.выполните.команду.
join
,.чтобы.объединить.его.с.фай- лом.
tasks.txt
.из.предыдущего.упражнения:
Process Owner;PID
jdoe;0
tjones;4
jsmith;340
msmith;528 3.. Используя.команду.
tr
,.замените.все.символы.с.запятой.в.файле.
tasks.txt
.сим- волом.табуляции.и.выведите.файл.на.экране.
4.. Напишите.команду,.которая.извлекает.имена.и.фамилии.всех.авторов.из.файла.
book.json
Чтобы.просмотреть.дополнительные.ресурсы.и.получить.ответы.на.эти.вопросы,.
зайдите.на.сайт.
https://www.rapidcyberops.com/
7
Анализ данных
В.предыдущих.главах,.чтобы.собрать.и.подготовить.данные.к.анализу,.мы.ис- пользовали.сценарии..Теперь.нам.нужно.разобраться.во.всех.полученных.данных..
Проанализировать.большие.объемы.данных.часто.помогает.поиск,.который.по.мере.
поступления.новых.данных.следует.постоянно.уточнять.и.ограничивать.
В.этой.главе.в.качестве.входных.данных.для.наших.сценариев.мы.возьмем.инфор- мацию.из.журналов.веб-сервера..Все.данные.используются.для.демонстрационных.
целей..Сценарии.и.методы.можно.легко.изменить.для.работы.с.данными.практи- чески.любого.типа.
Используемые команды
Для.сортировки.и.ограничения.отображаемых.данных.воспользуемся.командами.
sort
,.
head
.и.
uniq
..Работу.с.ними.продемонстрируем.на.файле.из.примера.7.1.
Пример 7.1. file1.txt
12/05/2017 192.168.10.14 test.html
12/30/2017 192.168.10.185 login.html sort
Команда.
sort
.используется.для.сортировки.текстового.файла.в.числовом.и.алфа- витном.порядке..По.умолчанию.строки.будут.упорядочены.по.возрастанию:.сна- чала.цифры,.затем.буквы..Буквы.верхнего.регистра,.если.не.указано.иначе,.будут.
идти.раньше.соответствующих.букв.нижнего.регистра.
Общие параметры команды
-r
.—.сортировать.по.убыванию.
-f
.—.игнорировать.регистр.
Глава 7. Анализ данных 111
-n
.—.использовать.числовой.порядок:.1,.2,.3.и.до.10.(по.умолчанию.при.сорти- ровке.в.алфавитном.порядке.2.и.3.идут.после.10).
-k
.—.сортировать.на.основе.подмножества.данных.(ключа).в.строке..Поля.раз- деляются.пробелами.
-o
.—.записать.вывод.в.указанный.файл.
Пример команды
Для.сортировки.файла.
file1.txt
.по.столбцу,.в.котором.указано.имя.файла,.и.игно- рирования.столбца.с.IP-адресом.необходимо.использовать.следующую.команду:
sort -k 3 file1.txt
Можно.также.выполнить.сортировку.по.подмножеству.поля..Для.сортировки.по.
второму.октету.IP-адреса.напишите.следующее:
sort -k 2.5,2.7 file1.txt
Будет.выполнена.сортировка.первого.поля.с.использованием.символов.от.5.до.7.
uniq
Команда.
uniq
.позволяет.отфильтровать.повторяющиеся.строки.с.данными,.кото- рые.встречаются.друг.рядом.с.другом..Чтобы.удалить.в.файле.все.повторяющиеся.
строки,.перед.использованием.команды.
uniq
.файл.нужно.отсортировать.
Общие параметры команды
-с
.—.вывести,.сколько.раз.повторяется.строка.
-f
.—.перед.сравнением.проигнорировать.указанное.количество.полей..Напри- мер,.параметр.
-f
3
.позволяет.не.принимать.во.внимание.в.каждой.строке.первые.
три.поля..Поля.разделяются.пробелами.
-i
.—.игнорировать.регистр.букв..В.
uniq
.регистр.символов.по.умолчанию.учи- тывается.
Ознакомление с журналом доступа к веб-серверу
Для.большинства.примеров.в.этой.главе.мы.используем.журнал.доступа.к.веб- серверу.Apache..В.журнал.этого.типа.записываются.запросы.страницы,.сделан- ные.к.веб-серверу,.время,.когда.они.были.сделаны,.и.имя.того,.кто.их.сделал..
Образец.типичного.файла.комбинированного.формата.журнала.(Combined.Log.
Format).Apache.можно.увидеть.в.примере.7.2..Полный.лог-файл,.который.был.
112 Часть II • Защитные операции с использованием bash использован.в.этой.книге,.называется.
access.log
..Его.можно.загрузить.по.адресу.
https://www.rapidcyberops.com/
Пример 7.2. Фрагмент файла access.log
192.168.0.11 - - [12/Nov/2017:15:54:39 -0500] "GET /request-quote.html HTTP/1.1"
200 7326 "http://192.168.0.35/support.html" "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0"
Журналы веб-сервера используются просто в качестве примера. Методы, опи- санные в этой главе, можно применять для анализа различных типов данных.
Поля.журнала.веб-сервера.Apache.описаны.в.табл..7.1.
Таблица 7.1. Поля журнала веб-сервера Apache
Поле
Описание
Номер
поля
192.168.0.11
IP-адрес.хоста,.запросившего.страницу
1
–
Идентификатор.протокола.RFC.1413.(–,.если.
идентификатора.нет)
2
–
Идентификатор.пользователя.с.проверкой.
подлинности.HTTP.(–,.если.идентификатора.нет)
3
[12/Nov/2017:15:54:39.-0500]
Смещение.даты,.времени.и.GMT.(часовой.пояс)
4,.5
GET./request-quote.html
Страница,.которая.была.запрошена
6,.7
HTTP/1.1
Версия.протокола.HTTP
8 200
Код.состояния,.возвращаемый.веб-сервером
9 7326
Размер.возвращаемого.файла.в.байтах
10
http://192.168.0.35/support.html Ссылающаяся.страница
11
Mozilla/5.0.(Windows.NT.6.3;.
Win64…
Агент.пользователя,.идентифицирующий.браузер 12+
Существует второй тип журнала доступа Apache, известный как обычный фор- мат журнала (Common Log Format). Формат совпадает с комбинированным, за исключением того, что не содержит полей для ссылающейся страницы или агента пользователя. Дополнительную информацию о формате и конфигурации журналов Apache можно получить на сайте проекта Apache HTTP Server: http://
bit.ly/2CJuws5.
Глава 7. Анализ данных 113
Коды.состояния,.указанные.в.табл..7.1.(поле.9),.позволяют.узнать,.как.веб-сервер.
ответил.на.любой.запрос..Популярные.коды.приведены.в.табл..7.2.
1 ... 6 7 8 9 10 11 12 13 ... 23