Статья Метод сбора данных при помощи классического linux bash

Admin

Администратор

Метод сбора данных при помощи классического linux bash​


Приветствую читатели форума. Основной целью этой статьи является представление реализации одного из распространенных методов удаленного съема/сбора и передачи информации о системе linux в определенную точку доставки с организацией защищенных соединений с использованием стандартных средств администрирования системы и сетей linux. Мы познакомимся с относительно простым и в то же время весьма элегентным методом получения служебной информации с удаленной системы linux по сети без привлечения большого числа сторонних приложений. Делаться это будет несколькими различными способами с использованием классических инструментов системного и сетевого администрирования, таких как операционная система linux, оболочка и язык bash-неотъемлемая часть unix подобной операционной системы linux, а так же сопутствующих утилит и прикладных программ, например таких как программа ssh, которые и будут представлены и подробно описаны ниже. Итак, давайте более подробно перечислим и опишем подробно те средства, которые мы будем применять в нашей статье для достижения указанных целей. Целевой операционной системой, на примере которой мы реализуем указанную задачу с которой предполагается собирать информацию выбран любой дистрибутив linux. В данном случае, не имеет большого значения какой именно, поскольку перечень используемых средств предусмотрительно ограничен, в том числе по причине реализации максимальной совместимости. Итак, давайте уже приступим.

Программа и оболочка ssh:

Описание:


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

Примеры использования:

1. Создание сессии ssh:
ssh -p 2222 user@target_server
Параметр -p указывает на порт(в данном случае 2222), на котором выполняется удаленная служба ssh Параметр user обозначает удаленного пользователя, под именем котрого мы подключаемся к целевому серверу (можно использовать такой синтаксис: ssh -l user target_server) Соответственно target_server это имя целевого сервера, либо его адрес, который может являться ip адресом хоста.

2. Выполнение команды/запуск программы на удаленном сервере посредством заранее установленной сессии ssh(продолжая предыдущую команду):
ssh -p 2222 user@target_server ls
В данном примере выполнение команды ls производится на целевом хосте. Для этого достаточно прописать вызываемую команду дополнительным параметром команды ssh после нее.

3. Перенаправление потоков вывода выполненной команды(варианты):

ssh -p 2222 user@target_server ls > /tmp/ls.out
Выполнение команды ls на удаленной системе с перенаправлением вывода выполненной команды в файл на локальной системе, с которой ведется установление сессии ssh.

ssh -p 2222 user@target_server ls \> /tmp/ls.out
Выполнение команды ls на удаленной системе с перенаправлением вывода выполненной команды в файл на удаленной системе, на которую прозводится установление сессии ssh и на которой выполняется команда ls.

ssh -p 2222 user@target_server bash < ./searchtypefiles.sh
Здесь мы, как вы уже должны были догадаться, мы вызываем выполение команды bash на удаленном сервере с одновременной передачей указанной команде на выполнение строки расположенного локально скрипта
searchtypefiles.sh. Вот таким образом мы можем выполнять локальные скрипты на удаленной целевой машине через сессию ssh.


scp file.tar.gz user@target_server:/home/user/file.tar.gz
Передача файл по протоколу ssh с локального хоста на удаленный узел.


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

Пример первый:

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

Скрипт searchtypefiles.sh:

Описание скрипта:

Поиск файлов указанного типа.

Использование скрипта:
searchtypefiles.sh [-c dir] [-i] [-R|r] <pattern> <path>


-c Копировать найденные файлы в указанную директорию
-i Игнорировать регистр букв
-R|r Рекурсивный поиск поддиректорий
<pattern> Шаблон типа файлов для поиска
<path> Путь до точки начала поиска

Код:
#!/bin/bash -

DEEPORNOT="-maxdepth 1"  ## только текущий каталог; по умолчанию

while getopts 'c:irR' opt; do  ## анализ аргументов опции:      ##сноска №1

    case "${opt}" in                                                                        ##сноска №2
    
        c) ## копировать найденные файлы в указанный каталог
        CPY=YES
        DESTDIR="$OPTARG"                                                     ##сноска №3
        ;;
    
        i) ## игнорировать регистр при поиске
        CASEMATCH='-i'
        ;;

        [Rr]) ## рекурсивно                                             ##сноска №4
        unset DEEPORNOT                                            ##сноска №5
        ;;
    
        *) ## неизвестный/неподдерживаемый вариант    ##сноска №6
           ## при получении ошибки mesg от gretops просто выйти
        exit 2
        ;;

    esac
done

shift $((OPTIND - 1))                                                                                     ##сноска №7

PATTERN=${1:-PDF document}  ##по умолчанию ведется поиск pdf    ##сноска №8
STARTDIR=${2:-.}  ## по умолчанию начать здесь: .

find $STARTDIR $DEEPORNOT -type f | while read FLN                          ##сноска №9
do
    file $FLN | egrep -q $CASEMATCH "$PATTERN"                                     ##сноска №10
    if (( $? == 0 )) ## найден один                                                                 ##сноска №11
    then
        echo $FLN
    if [[ $CPY ]]                                                ##сноска №12
    then
        cp -p $FLN $DESTDIR                                        ##сноска №13
    fi
    fi
done

Детализация скрипта с описанием сносок:

##сноска с описанием №1

Данный скрипт поддерживает параметры, изменяющие его поведение. Сценарий скрипта парсит и анализирует заданные параметры, для того чтобы определить, какие из них имеют место быть. Для гибкости в манипуляции со списком/массивом параметров используется встроенная оболочка getopts. Цикл while вызывает getopts до тех пор, пока та не вернет ненулевое значение, что будет свидетельствовать о том, что других параметров более нет. Параметры перечисляются специальным образом в строке c:irR. При нахождении любого параметра, в переменную opt возвращается соответствующее имя переменной.


##сноска с описанием №2
Использование оператора case, при помощи которого будет выбрано решение по условию, соответствующему шаблону, заданному перед левой круглой скобкой.

##сноска с описанием №3
Параметр c двоеточием " : " , находящимся в списке поддерживаемых опций, которые указывает getopts, что пользователь должен предоставить аргумент для этого параметра. В нашем сценарии этот аргумент является директорией. Когда команда getopts анализирует параметр с указанным выше аргументом, она помещает указанный параметр в переменную с именем $OPTARG, а сохраняет в $DESTDIR. Так как в дальнейшем, при новых вызовах getopts переменная $OPTARG может изменяться.

##сноска с описанием №4
В этом месте сценарий позволяет указывать в параметре прописную букву R или строчную r, на выбор.

##сноска с описанием №5
Другие параметры устанавливают переменные, чтобы мы могли их задействовать. В данном случае мы при помощи процедуры $UNSET отменяем ранее установленную переменную и ее значение.

##сноска с описанием №6
Это еще один шаблон подстановки регулярного выражения '*' - соответствующий чему угодно в оболочке bash. Если ни один другой шаблон не будет найден, выполнится данное условие. По сути, это условие else для оператора case.

##сноска с описанием №7
По окончанию анализа параметров, мы можем избавиться от аргументов, обработанных с помощью процедуры shift. После такого сдвига первый аргумент сценария, представленный переменной $1 однозначно будет ссылаться на первый аргумент, независимо от того, были ли вообще предоставлены какие-либо параметры при вызове сценария.

##сноска с описанием №8
Два возможных аргумента не в формате -option - это шаблон, который мы ищем, и каталог, в котором хотим начать поиск. Когда мы ссылаемся на переменную bash, можем добавить :- и сказать: «Если это пустое значение не задано, вернуть вместо него значение по умолчанию». По умолчанию для $PATTERN мы присваиваем значение в виде документа PDF, а значением по умолчанию для $STARTDIR является ., что означает ссылку на текущую директорию.

##сноска с описанием №9
Далее вызывается команда find , которая должна начать поиск в $STARTDIR .Помните, что $DEEPORNOT может не устанавливаться и, следовательно, ничего не добавлять в командную строку. Кроме того, здесь может находиться значение по умолчанию -maxdepth 1, указывающее, что find не следует искать глубже этого каталога. Чтобы находить только простые файлы (тоесть не директории или специальные файлы устройств), мы добавили параметр -type f . Этот параметрне является обязательным, и вы можете удалить его, если хотите иметь возможность искать файлы конкретного типа. Имена найденных файлов передаются в цикл while, который будет читать их по одному в переменной $FN.

##сноска с описанием №10
Параметр -q утилиты egrep говорит о том, что эта egrep подавляет стандартный вывод.

##сноска с описанием №11
Переменная $? содержит текущее значение, возвращаемое в оболочку предыдущей командой, которая выполнялась в контексте оболочки. Успешный результат свидетельствует о том, что шаблон обнаружен.

##сноска с описанием №12
Проверяем, имеет ли $CPY значение. При отсутствии значения, результатом if будет false.

##сноска с описанием №13
Параметр -p команды cp при копировании дает возможность сохранить всю информацию о копируемом файле: некоторую служебную информацию о файле в системе.


В качестве еще одного примера решения задачи, но с меньшими возможностями, можно использовать параметр exec команды find:

find / -type f -exec file '{}' \; | egrep 'PNG' | cut -d' ' -f1
В данном случае мы отправляем каждый элемент, найденный программой find, на стандартный ввод утилиты file(встроенными средствами find), которая, в свою очередь, должна определить тип каждого найденного файла. Далее, вывод файла через конвеер перенаправления стандартного вывода передается на стандартный ввод утилите egrep, где уже происходит его фильтрация, в результате чего выполняется поиск ключевого слова, определяющего тип - PNG. Утилита cut, получающая отфильтрованный результат, используется для того, чтобы сделать вывод более удобочитаемым.

Пример второй:

Далее мы разберем еще один пример в виде сценария local_info.sh, приведенный ниже, предназначен для определения типа операционной системы, запуска различных команд, соответствующих типу операционной системы, и записи результатов в файл. Вывод каждой команды хранится в формате XML. Вызов скрипта производится следующим образом: bash local_info.sh < commands.txt, где файл commands.txt содержит список команд, аналогичных приведенным в таблице ниже.

Вот как может выглядеть файл commands.txt:

# Linux Command | MSWin Bash | XML tag | Purpose
#------------------+-------------+-------------+---------------------
uname -a | uname -a | uname | OS version
cat /proc/cpuinfo| systeminfo | sysinfo | hardware info
ifconfig | ipconfig | nwinterface | network interface info
route | route print | nwroute | routing table
arp -a | arp -a | nwarp | arp resolution table
netstat -a | netstat -a | netstat | network connections
mount | net share | diskinfo | mounted resources
ps -e | tasklist | processes | running processes


Скрипт local_info.sh:

Описание:
Собираем основную информацию о системе и перенаправление в файл

Использование:
bash local_info.sh < commands.txt
commands.txt — это файл со списком команд для выполнения
CmdSeparate - отделение команд от строки ввода
Код:
#!/bin/bash -

function CmdSeparate()
    {
        LCMD=${ALINE%%|*}         ##сноска с описанием №11
        REST=${ALINE#*|}              ##сноска с описанием №12
        WCMD=${REST%%|*}        ##сноска с описанием №13
        REST=${REST#*|}
        TAG=${REST%%|*}             ##сноска с описанием №14

    if [[ $OSTYPE == "MSWin" ]]
    then
        CMD="$WCMD"
    else
        CMD="$LCMD"
    fi

    }
 
function GetInfo ()
    {                                                     ##сноска с описанием №5

        printf '<systeminfo host="%s" type="%s"' "$HOSTNM" "$OSTYPE"
        printf ' date="%s" time="%s">\n' "$(date '+%F')" "$(date '+%T')"
        readarray CMDS                      ##сноска с описанием №6
        for ALINE in "${CMDS[@]}"     ##сноска с описанием №7
        do           

        if [[ ${ALINE:0:1} == '#' ]] ; then continue ; fi    ##сноска с описанием №8
            CmdSeparate
        if [[ ${CMD:0:3} == N/A ]]                ##сноска с описанием №9
        then
            continue
        else
            printf "<%s>\n" $TAG                  ##сноска с описанием №10
            $CMD
            printf "</%s>\n" $TAG
        fi
    done
    printf "</systeminfo>\n"
    }

OSTYPE=$(./detect_os.sh)        ##сноска с описанием №1
HOSTNM=$(hostname)             ##сноска с описанием №2
TMPFILE="${HOSTNM}.info"     ##сноска с описанием №3

# собрать в tmp-файл как информацию, так и ошибки
GetInfo > $TMPFILE 2>&1        ##сноска с описанием №4

Детализация скрипта с описанием сносок:
##сноска с описанием №1

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

##сноска с описанием №2
Затем мы запускаем программу hostname в подоболочке для получения имя текущей системы и для его использования в следующей строке, а позже — в функции GetInfo.

##сноска с описанием №3
Использование имени хоста, как части временного имени файла, в который мы отправляем весь наш вывод.

##сноска с описанием №4
Реализация вызова функции, которая выполняет большую и основную часть работы этого скрипта. При вызове функции мы перенаправляем и стандартный вывод, и стандартные ошибки в один и тот же файл, чтобы функция не перенаправляла ни на один из своих выводных операторов. Функция может вносить записи в стандартный вывод(stdout), и при необходимости этот вызов перенаправляет весь вывод. Другой способ выполнить перенаправление - это поместить его перед закрывающей скобкой определения функции GetInfo. Кому как удобно соответственно.

##сноска с описанием №5
По сути, в данном месте начинается самая важная часть сценария. Функция начинается с вывода XML тега, который имеет свой закрывающий тег, записанный в конце этой функции.

##сноска с описанием №6
Команда readarray в bash будет читать все строки ввода (до конца читаемого файла или до системного сигнала от сочетания клавиш Ctrl+D). Каждая строка будет отдельно записана в массив, в данном случае $CMDS.

##сноска с описанием №7
Цикл for зацикливает значения массива $CMDS по одной строке за каждый проход.

##сноска с описанием №8
Используется операция подстроки, чтобы извлечь из переменной $ALINE символ в позиции 0 от указанной длины. Символ # заключен в кавычки для того, чтобы оболочка bash не интерпретировала его как начало комментария скрипта. Если строка не является комментарием, то скрипт соответственно вызывает нашу функцию CmdSeparate, подробности о которой будут приведены позже, и она, в свою очередь, разделяет строку ввода на $CMD и $TAG, где $CMD будет подходящей командой, в зависимости от того, в какой именно системе запускается скрипт.

##сноска с описанием №9
Соответственно тут мы применяем операцию подстроки с начала строки, определяя позицию от установленной длины, с целью найти строку, указывающую, что в данной конкретной операционной системе для данной информации, соответствующей операции не существует. Далее, оператор continue указывает сценарию перейти к следующей итерации.

##сноска с описанием №10
Если необходимо выполнить определенные действия, то в этом месте кода по обе стороны от вызова команды будет прописан соответствующий XML тэг.

##сноска с описанием №11
Отделяем команду от строки входного файла, удаляя все символы справа от вертикальной черты, в том числе и саму строку. Спаренные символы %% указывают на то, что самое точное(длинное) совпадение возможно в правой части значения переменной, значит необходимо удалить его из возвращаемого значения, то есть переменная $ALINE при этом не изменяется.

##сноска с описанием №12
Добавив символ #, мы удаляем самое короткое совпадение слева от значения переменной. Таким образом, удаляется команда, относящаяся к Linux системе, которая была ранее помещена в переменную $LCMD.

##сноска с описанием №13
Опять таки, удаляется все, что находится справа от вертикальной черты, тут уже работа ведется с переменной $REST, которая изменялась в предыдущем выражении. В данном случае проверяем на присутствии в системе команды, характерной для систем Windows.

##сноска с описанием №14
В этих строках мы извлекаем тег XML с помощью тех же операций замещения, которые уже рассматривалсь выше.


И теперь, все, что осталось в работе этой функции, - это решить, основываясь на определенном типе операционной системы, какое значение возвращать в $CMD. Переменные являются глобальными, если они явно не объявлены в функции как локальные. Ни одна из переменных не является локальной, поэтому их можно использовать/устанавливат/изменять по всему сценарию и фактически любых функциях и вне их. При запуске данного сценария, как уже было показано ранее, вы можете использовать файл commands.txt, а также изменять его значения, чтобы получить необходимую конкретно вам информацию. Вы также можете запустить его, не перенаправляя ввод из файла. Просто введите входные данные после вызова сценария. Все варианты на ваш выбор. Здесь мы показали возможности и гибкость оболочки bash в том числе для подобных задач.

Теперь реализуем сценарий detect_os.sh, о котором мы упомянули в прошлом примере и который там вызывается из текста программы: Определение типа операционной системы: Windows/Linux/MacOS, который реализуется посредством нахождения команды, уникальной для конкретной операционной системы. Ограничением выступает то, что в любой операционной системе привелегированный пользователь имеет возможность создать команду с подобным названием, либо наоборот, удалить ее, а потому данный способ нельзя считать абсолютно надежным. Приводим его в качестве практического примера и скорее с целью обучения.

Скрипт detect_os.sh
Код:
#!/bin/bash -
#
# Bash и кибербезопасность
# detect_os.sh
#
# Описание:

#
# Использование: bash detect_os.sh
# вывод будет одним из таких: Linux MSWin macOS
#

if type -t wevtutil &> /dev/null     ##сноска с описанием №1
    then
        OSTYPE=MSWin

elif type -t scutil &> /dev/null      ##сноска с описанием №2
    then
        OSTYPE=macOS

else
        OSTYPE=Linux
fi

echo $OSTYPE

Детализация скрипта с описанием сносок:

##сноска с описанием №1

Мы используем встроенную в bash команду type, чтобы сообщить, к какому виду команд (псевдоним, ключевое слово, функция, встроенная команда или файл) относятся ее аргументы. Опция -t говорит, что ничего не нужно выводить, если команда не найдена. В этом случае возвращается значение false. Мы перенаправляем весь вывод (и stdout, и stderr) в /dev/null, тем самым отбрасывая его, так как
хотим знать только, была ли найдена утилита wevtutil.

##сноска с описанием №2
Если wevtutil не найдена, мы снова используем встроенную в bash команду type, но на этот раз ищем утилиту scutil, которая доступна только в системах MacOS. Далее, в ветке проверки условий по остаточному принципу выбирается система Linux.В более простом или наглядном варианте, вы можете этот скрипт вставить в тело другого сценария, например в качестве дополнительной функции. Как это реализовать в вашем случае-решать уже вам.

Если требуется получить необходимые файлы(в том числе и те, которые являются продуктом выполнения вышеуказанных скриптов) с удаленной системы, используйте программу scp из пакета ssh, которая работает по данному протоколу и которую мы упоминали ранее в начале статьи а потому будет совестимой в данной части и не потребует дополнительных затрат в виде избыточного программного обеспечения, что потенциально понизит уровень безопасности, ну и разумеется трудозатрат на реализацию дополнительных шагов по настройке ПО.

Ну вот, собственно, мы и закончили с описанием практических примеров сбора информации с удаленной системы посредством классических инструментов систем семейства unix/linux, которые обычно присутствуют в любых дистрибутивах и их вариантах. Спасибо за внимание и за прочтение. Надеюсь кому-нибудь будет интересно и полезно, полезных делах.
 
Похожие темы
Admin Статья Новый метод поиска информации OSINT 0
Support81 Вирус-вымогатель Interlock использует метод FileFix для доставки вредоносного ПО Новости в сети 0
GetLeads Интересно Лучший метод работы с холодной аудиторией в 2024 Способы заработка 2
Support81 Градус email-фишинга повышается: TA866 использует новый метод атаки Новости в сети 0
M [2 руб.] Инвайт Telegram | Безопасный метод (даже в чаты с баном) Спам: софт, базы, рассылки, отклики, ddos 3
zladey1986 Интересно Уникальный авторский метод пожизненного дохода от 30$ в день (2021) Способы заработка 7
S Усовершенствованный метод сокрытия подгруженной dll в изложении на C для новых ОС семейства Windows Уязвимости и взлом 0
F Оригинальный метод кардинга | Черное/Оффлайн Способы заработка 4
S Метод послушать переговоры МВД/МЧС/охраны/инкассаторов и т.д. Полезные статьи 0
K Обучение дистанционному видению метод спецслужб - Пичугин (2015) https://cloud.mail.ru/public/5oTq/THdACPR7a Раздачи и сливы 10
Z Метод добычи токена вк с помощью СИ! Фишинг, мошенничество, СИ 2
A Метод заработка Полезные статьи 6
S Telegram обещал представить простой метод обхода блокировки мессенджера Новости в сети 0
N Лёгкий метод SQL - Injektion Готовый софт 14
Admin Метод получения доступа к компам Полезные статьи 2
АнАлЬнАя ЧуПаКаБрА Метод привлечения поискового трафика ВКонтакте Полезные статьи 3
Admin Статья Часть 1; fuzzing для сбора скрытых endpoints и дальнейшей эксплуатации API Уязвимости и взлом 0
Emilio_Gaviriya Статья Инструмент для сбора whois-истории. Уязвимости и взлом 0
АнАлЬнАя ЧуПаКаБрА Софт для сбора всех баз с компа by PsyhoShark v3 Готовый софт 0
B 15 баз для сбора информации о людях, автомобилях и фирмах Полезные статьи 2
G AngryFuzzer - Инструмент для сбора информации Уязвимости и взлом 0
T Способ заработка и сбора сканов (ну прям приятное и полезное). Способы заработка 0
A No Hands Proxies|Мощный софт для сбора прокси Готовый софт 2
АнАлЬнАя ЧуПаКаБрА Скрипт сбора целевой активной аудитории Вконтакте! Готовый софт 0
T Скрипт сбора целевой активной аудитории Вконтакте! Готовый софт 0
Admin Статья Быстрый и защищенный стриминг данных: ECDH + AES-GCM Анонимность и приватность 0
A Продаю базу данных чатов телеграм. Все чаты отсортированы по тематикам и критериям. Все по разным файлам отсортированы. ( Не в разброс) чаты подойдут Все остальное 2
Admin Интересно Хакеры начали массовый взлом аккаунтов Instagram после крупной утечки данных. Новости в сети 0
Admin Статья Гейминг как источник данных: OSINT в виртуальных мирах OSINT 0
Admin Статья Типы данных ARM и регистры Уязвимости и взлом 0
Admin Интересно Вводить пароли и подписывать документы в кафе теперь опасно. Ученые нашли новый способ утечки данных. Новости в сети 0
A Базы данных|DataBases Все остальное 0
Support81 Информационная «золотая лихорадка». Владельцы Telegram-ботов по «пробиву» начали скупать утечки данных до их появления в даркнете Новости в сети 0
Support81 Три банды вымогателей объединились в "корпорацию зла" — делят код, базы данных и электростанции Новости в сети 0
Support81 Вирус-вымогатель SafePay угрожает утечкой 3,5 ТБ данных Ingram Micro Новости в сети 0
Support81 ShinyHunters стоит за атаками по краже данных Salesforce в Qantas, Allianz Life и LVMH Новости в сети 0
Support81 Уничтожено 100 ТВ данных оккупационных властей Крыма: ГУР провело масштабную кибероперацию Новости в сети 0
Support81 3 дня, 12 компаний, 400 ГБ данных: Akira выжигает бизнес за бизнесом Новости в сети 0
wrangler65 Katz Stealer: новая опасная малварь для кражи данных с функциями скрытности и модульности Новости в сети 0
K Приму в дар или куплю базы данных, архивные сканы, цифровые фото метрических церковных книг Курской, Белгородской, Харьковской губерний любых годов OSINT 0
K Ищу человека, который поможет с поиском генеалогических данных по Украинской ССР Предоставляю работу. Ищу специалиста. 0
K Приму в дар, куплю базы данных переписи населения Украинской ССР, Украины, СССР, Российской Федерации любых годов Раздачи и сливы 0
Support81 Data Ransom: шантаж выделился в самостоятельный сервис на черном рынке данных Новости в сети 0
Support81 Личное в публичное: как простой вызов такси оборачивается потерей данных Новости в сети 0
Support81 Лица на распродаже: как утечки данных помогают хакерам обходить проверки личности Новости в сети 0
Support81 DoS, RCE и утечки данных: как Prometheus становится оружием хакеров Новости в сети 0
Support81 Хакеры требуют $15 000 000: как 1win борется за сохранность данных 100 млн клиентов? Новости в сети 0
Support81 Новая 0day-уязвимость в Windows: утечка данных через темы оформления Новости в сети 0
Support81 После TikTok настала очередь Temu: новая китайская угроза для данных американцев Новости в сети 0
Support81 Ailurophile Stealer: новый похититель данных молниеносно распространяется среди киберзлодеев Новости в сети 0

Название темы