• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья XssBot - Модульный резидентный бот с супер-админкой.Часть первая

Пожалуйста, обратите внимание, что пользователь заблокирован
Да вполне годная статья, главное тенденция правильная, показать на пальцах, как создается софт. Никто тут и не ожидал приватных решений и новых концепций :)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Вообще, судя по тому, что обсуждают, нам нужен новый тред. Тред про архитектурные вопросы, тот самый каркас, с чего начинается бот. Вопрос считаю очень важным к обсуждению, плюс раскрытие темы (то, чем каждый сможет поделиться и обсудить) не сливает какие то приватные техники, однако позволит поднять общий уровень познаний о построении модульного софта, а так же позволит создать ориентир качества, так, чтобы на ветку можно было ссылаться. Прийти к консенсусу, что есть тру в архитектуре, а что излишне или не правильно. У меня есть полно своих мыслей/убеждений на этот счёт, но я не исключаю, что могу сам думать о каких то аспектах не точно/не правильно и хотелось бы придать это обсуждению, которое позволит, как я сказал, задать ориентир и расти вместе.
Архитектурные вопросы - это как раз то с чего начинается софт, тут полностью согласен.
 
Вообще, судя по тому, что обсуждают, нам нужен новый тред. Тред про архитектурные вопросы, тот самый каркас, с чего начинается бот. Вопрос считаю очень важным к обсуждению, плюс раскрытие темы (то, чем каждый сможет поделиться и обсудить) не сливает какие то приватные техники, однако позволит поднять общий уровень познаний о построении модульного софта, а так же позволит создать ориентир качества, так, чтобы на ветку можно было ссылаться. Прийти к консенсусу, что есть тру в архитектуре, а что излишне или не правильно. У меня есть полно своих мыслей/убеждений на этот счёт, но я не исключаю, что могу сам думать о каких то аспектах не точно/не правильно и хотелось бы придать это обсуждению, которое позволит, как я сказал, задать ориентир и расти вместе.
Сделай, напиши, умоляю, потому что нихрена нету ничего подобного. Голова каждый день болит (физически, может из за жары еще хз), не хватает блин такого материала. Трафик, паршивый но есть, софта тоже есть, на вот первого рубежа у меня нет, уже начал делать, жду твой тред очень-очень. Это будет важно лично для меня. Спасибо заранее.
 
А зачем в данном случае ограничивать все 100 символами? Вдруг линк на панель будет дольше?
Вижу буффер оверфлоу :D:D:D
 
Вижу буффер оверфлоу :D:D:D
Ну смотря как работать потом.

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

Далее использовать уже безопасные функции, типо-там strncpy и т.д.

Тогда никаких буффер оверфлоу не будет.)
 
Ну смотря как работать потом.

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

Далее использовать уже безопасные функции, типо-там strncpy и т.д.

Тогда никаких буффер оверфлоу не будет.)
Тема уже поднималась неодноразово. В малвари использовать strncpy, lstrcpy и прочее будет только нуб. Проще реализовать все нужные функции для работы со строками самому, так как на них сложнее будет поставить бряк.
 
Тема уже поднималась неодноразово. В малвари использовать strncpy, lstrcpy и прочее будет только нуб. Проще реализовать все нужные функции для работы со строками самому, так как на них сложнее будет поставить бряк.
и все потом заинлайнить

на личном опыте скажу, что очень сильно еб*т когда попадается макрос....
 
Тема уже поднималась неодноразово. В малвари использовать strncpy, lstrcpy и прочее будет только нуб. Проще реализовать все нужные функции для работы со строками самому, так как на них сложнее будет поставить бряк.
Да, конечно.
С этими функциями все проще даже, можно дернуть их из либ. си и даже самому их релизовывать не нужно.)))

Я малварь так не писал, но был проект, нужно-было сделать свой кастомный загрузчик для железки, по типу u-boot (https://ru.wikipedia.org/wiki/Das_U-Boot).

Там-же только язык си, даже стандартной библиотеки не было. Было прикольно такое делать, свой аллокатор, свои функции для работы со строками и т.д.)))

Вообще пост был не про это, а про безопасную обработку параметров, конечно лучше использовать функции типо strncpy, будь они самописные, или взятые из стандартной библиотеки.

Кстати можно даже свой кастомный класс стринг сделать.)
 
В C же нет классов
В си нет, но это проект С++.

Я про этот проект сказал, что можно сделать кастомный класс стринг.

Вообще честно сказать класс от структуры как по мне не особо-то много и отличается.)))
 
В си нет, но это проект С++.

Я про этот проект сказал, что можно сделать кастомный класс стринг.

Вообще честно сказать класс от структуры как по мне не особо-то много и отличается.)))
В структурах нельзя методы обьявлять. Поэтому структура для такого не подойдет.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
В структурах нельзя методы обьявлять. Поэтому структура для такого не подойдет.
Кто сказал, что нельзя?
 
В структурах нельзя методы обьявлять. Поэтому структура для такого не подойдет.
Зато можно делать указатели на функции, чем не методы ?

Кстати классический вопрос на любом собеседовании по С++.

В чем отличие структуры от класса ?

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

Т.е. струтктура всегда public по умолчанию, а классы private.
 
Кто сказал, что нельзя?
Это написано в любом учебнике по C. Можно обьявить только указатель на функцию:

Код:
typedef struct client_t client_t, *pno;
struct client_t
{
        pid_t pid;
        char password[TAM_MAX]; // -> 50 chars
        pno next;

        pno (*AddClient)(client_t *);   
};

pno client_t_AddClient(client_t *self) { /* code */ }
 
Что-бы довести проект до логического конца, вышло обновление бота:

1)Переделана инсталяция:

Бот теперь копирует себя в рабочую папку:C:\Users\USER\AppData\Roaming\BotId\
Далее создает ярлык в автозагрузке.

Имя бота можно изменить в конфиге (Config.h), там-же теперь задается частота пинга и меняется айпи адрес.

2)Сборка теперь без стандартных либ и CRT.

3)Вся работа со строками и т.д., через кастомный функционал.

4)Все используемые API были скрыты через динамический импорт.

5)Файлы структурированы по папкам.

6)Был удален ранпе, вместо него используется модуль для загрузки длл, да им можно грузить PE.)))

Итоги работы:

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

Где-то неоправдано выделяется много памяти под строки и т.д.

Связанно это с тем-что у всех ограничения по времени, нет смысла слишком много времени тратить над паблик проектом.

Тем не менее думаю польза от этого решения есть:

1)Никто и не собирался делать решение для селлеров, в данном проекте можно посмотреть и использовать какие-то наработки в своих решениях.

2)Благодаря этому проекту появилась весьма поучительная и классная статья от Rubicon https://xss.pro/threads/38851/ я надеюсь он еще напишет итоговую статью, как проектировать такого типа решения.

3)Также это решение можно использовать как каркас для чего-то еще, ну либо для тестов чего-то.

В общем в любом случае я не жалею, что поучаствовал в конкурсе, что-то нового для себя узнал, получил какой-то опыт. Короче полезно.)))
 
2)Благодаря этому проекту появилась весьма поучительная и классная статья от Rubicon https://xss.pro/threads/38851/ я надеюсь он еще напишет итоговую статью, как проектировать такого типа решения.

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

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

Хорошие выводы :)
 
Спасибо автору за проделанный труд, в проекте реализовано очень много полезных решений. Интересно было бы расширить проект передачей файлов на сервер. К примеру нужно запустить Task чтобы он в цикле делал снимки экрана и отправлял потом на сервер. Можно реализовать несколькими способами:
1 вариант - сохранять файлы сначала на диск, шифровать их и потом (например раз в 2 часа или по рандомному времени даже лучше) отправлять на сервер.
2 вариант - делать снимок и сразу отправлять на сервер (по мне более палевный потому что частая сетевая активность)
3 вариант - сделать отдельный exe для отправки - то есть бот накапливает файлы в определенной папке, а отдельный независимый exe периодически проверяет эту папку и если файлы есть то отправляет на сервер или даже можно отправлять на облака

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

А так - 1 вариант норм, 2 вариант больше для ратников подходит, вот чтобы прямо сейчас увидеть титюли одноклассницы
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Статья понравилась, особенно когда авторы слушают «критиков» и вносят доработки в свой код. Для меня как для новенького статья оказалась познавательной.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх