Содержание статьи
- Дампы
- Командование военной контрразведки (dcc.mil.kr)
- Доступ в хранилище МИД Южной Кореи
- Доступ к внутренней сети правительства Южной Кореи
- Разное
- Артефакты
- Генератор против контрразведки
- Бэкдор в ядре Tomcat
- Личный маяк Cobalt Strike
- ToyBox для Android
- Ivanti Control, он же RootRot
- Bushfire
- SpawnChimera и газета The Hankyoreh
- Кто такой Kimsuky
- Операция Covert Stalker
- Украденные сертификаты GPKI
- Атака на похожие цели
- AiTM-атака на пользователей Microsoft: гипотеза
- KIM — китаец?
- Забавные факты и приколы
Далее — близкий к тексту пересказ статьи Saber и cyb0rg из бумажной версии Phrack, подготовленной для DEF CON. Этот материал доступен без платной подписки.
Kimsuky — это поддерживаемая правительством КНДР хакерская группа типа Advanced Persistent Threat (APT), нацеленная на шпионаж за аналитическими центрами, предприятиями, операторами атомных электростанций и правительственными структурами. Она внесена в список в соответствии с указом E. O. 13687 как агентство, инструмент или подконтрольная структура правительства КНДР.
Мы будем называть этого конкретного участника просто KIM — так короче. И KIM тебе не друг!
В дампе нашлось немало бэкдоров и инструментов Kimsuky, а заодно и внутренняя документация. Из нее видно, что Kimsuky без стеснения работает в паре с китайскими APT-группами, обмениваясь инструментами и приемами.
Некоторые из этих инструментов тебе, возможно, уже встречались: ты видел их сканеры, находил серверные артефакты и импланты. А теперь в придачу получишь их клиенты, документацию, пароли, исходники и командные файлы.
И, чтобы жизнь казалась слаще, мы подкинули бонус — бэкап VPS, с которого члены группировки запускали атаки с таргетированным фишингом.
Дампы
Давай кратко пробежимся по содержимому дампов, а потом разберем основные находки.
Итак, среди интересного:
- логи, фиксирующие атаку на Командование военной контрразведки;
- доступ к Министерству иностранных дел Южной Кореи;
- доступ к внутренней сети правительства Южной Кореи
- …и еще куча файлов, до которых мы пока не добрались.
Первый дамп — с гостевой виртуалки KIM, второй — с его публичного VPS. Оба были получены примерно 10 июня 2025 года.
Из занятного:
- Скриншот его рабочего стола (
kim_desktop.
).jpg - Linux Dev System (VM на Deepin 20.9 Linux).
- Гостевая VM имела примонтированный диск хоста
C:
(через HGFS). Дамп прилагается.\ - Список всех файлов лежит в
./
.file-lists - Около 20 тысяч записей в истории Brave и Chrome — с кучей email-адресов (
jeder97271@wuzak.
,com xocaw75424@weiby.
и так далее), сайтов, которые посещал KIM, и инструментов, которые он скачивал.com - Все расширения Chrome: для подмены User-Agent, Proxy SwitchyOmega, Cookie Editor и множество других.
- Файл ko图文编译.doc — это инструкция по эксплуатации одного из бэкдоров. Там даже есть официально звучащее предупреждение (перевод): «Запрещено использовать бэкдор не по назначению».
- В
mnt/
— куча паролей, включая рабочие пароли к почте и VPS.hgfs/ Desktop/ fish_25327/ vps20240103. docx - Море паролей — в
mnt/
. Там находятся как рабочие email, так и пароли к VPS:hgfs/ Desktop/ fish_25327/ vps20240103. docx - root:
1qaz2wsx
; - dysoni91@tutamail.com:
!
;QAZ4rfv! @#$ - https://sg24.vps.bz:4083/center2025a@tutamail.com:
H4FHKMWMpX8bZ
; - https://monovm.com/dysoni91@tutamail.com:
dr567h%a"G6*m
.
- root:
- Из
fish-url.
иtxt generator.
ты узнаешь секреты повторяющихся паттернов паролей.php
Второй дамп
- Имя сервера:
vps1735811325
, размещен наvps.
.bz - Этот сервер участвовал в целевых фишинговых атаках.
- Примечательны SSL-сертификаты и
auth.
. Подробнее о сорцах фишинговых атак — ниже.log
Командование военной контрразведки (dcc.mil.kr)
-
Где лежит:
vps/
var/ www/ html/
Командование военной контрразведки (DCC) — это разведывательная организация Вооруженных сил Южной Кореи. Главная миссия DCC — коварные и тайные операции, а также контрразведка.
Логи показывают, что всего три дня назад была фишинговая атака на dcc.
.
В тех же логах засветились The Supreme Prosecutor Office (spo.
), korea.
, daum.
, kakao.
и naver.
. Обрати внимание, что Admin-C для dcc.
зарегистрирован на hyuny1982@naver.
.
grep -Fhr 'doc.mil.kr' 1og | uniqjandy3912@dcc.mil.kr_amFuZHkzOTEyQGRjYy5taWwua3I=di031111@dcc.mil.kr_ZGkwMzExMTFAZGNjLm1pbC5rcg==didcdba@dcc.mil.kr_ZG1kY2RiYUBkY2MubWlsLmty
jhcgod88@dcc.mil.kr_amhjZ29k0DhAZGNjLm1pbC5rcg==chanchan0616@dcc.mil.kr_Y2hhbmNoYW4wNjE2QGRjYy5taWwua3I=yib100@dcc.mil.kr_eWliMTAwQGRjYy5taWwua3I=Dsc808@dcc.mil.kr_RHNjODA4QGRjYy5taWwua3I=...
Доступ в хранилище МИД Южной Кореи
Копия платформы электронной почты Министерства иностранных дел Южной Кореи лежала в файле с названием mofa.
. Похоже, исходники стащили совсем недавно.
1923 Apr 1 07:15 .gitignore
96 Apr 1 07:15. gitmodules
4096 Apr 1 07:15 kebi-batch/
4096 Apr 1 07:15 kebi-core/
4096 Apr 1 07:15 kebi-resources/
4096 Apr 1 07:15 kebi-web-admin/
4096 Apr 1 07:15 kebi-web-archive/
4096 Apr 1 07:15 kebi-web-mail/
4096 Apr 1 07:15 kebi-web-mobile/
4096 Apr 1 07:16 kebi-web-parent/
7528 Apr 1 07:16 pom.xml
14099 Apr 1 07:15 README.txt
Судя по формату файлов, это, скорее всего, дамп из репозитория на GitHub, который выступает частью почтового сервера. В исходном коде полно упоминаний о правительственных доменах:
./kebi-web-parent/mail/document/info.txt
/home/ksign/agent
http://email.mofa.go.kr:8080/mail/sso?type=login
http://mail.mofa.go.kr:8080/mail/sso?type=unseenMails
http://email.mofa.go.kr:8190/mail/sso?type=login
http://mail.mofa.go.kr:8080/mail/sso?type=unseenMails
Доступ к внутренней сети правительства Южной Кореи
Похоже, KIM сохраняет доступ к внутренним системам сети правительства Южной Кореи. Есть проект под названием onnara_auto
, где лежит несколько занятных файлов. Судя по всему, это набор инструментов для работы с внутренними правительственными серверами. Например, файл /
содержит такие записи:
[horedi179] get onnara9.saas.gcloud.go.kr в 11/05/2025 19:41:23
[horedi179] main_job: Session 6112b9bc-5a2a-4abd-a907-aaec4b19e2ed does not exist at 11/05/2025 19:41:23
[horedi179] get onnara9.saas.gcloud.go.kr at 11/05/2025 19:41:23
[horedi179] get https://onnara9.saas.gcloud.go.kr/ at 11/05/2025 19:45:37
[horedi179] main_job: Session 0c446a8c-e913-467d-a9b9-3f08abfb6f7a does not exist at 11/05/2025 19:45:37
[horedi179] get https://onnara9.saas.gcloud.go.kr/SSO.do at 11/05/202...
Соответствующий код:
drives = instanceManger (config_hub)client = Client(config_hub)plugins = PluginManager()try: onnara = onnara_sso("horedi79", "1250000", "onnara9") klass = plugins.load(os.path.join(os.getcwd(), "scripts", target_project, "onLaunch.py"), opts={'onnara' :onnara, 'drives': drives, "client": client,)
Хост onnara9.
недоступен из публичного интернета, но домен светится в ряде документов как внутренний правительственный портал. Похоже, что у Кима есть доступ к этой сети.
Разное
IP этой машины — 156.59.13.153 (Сингапур). На этом айпишнике крутится SSHD на порте 60233, а порт 4012 светит TLS-сертификат с CN=*.
. Этот сертификат засветился на примерно 1100 уникальных IP. Львиная доля (>90%) разбросана по Китаю и Гонконгу. Возможно, это какая‑то сеть прокси или Operational Relay Boxes (ORB).
13 июня 2025 года KIM зарегистрировал сайт webcloud-notice.
. Мы думаем, что в рамках подготовки будущей фишинговой атаки. Мы нашли сертификат и приватный ключ для rc.
— это удаленный сервис управления South Korea Telecom.
Куча паролей LG Uplus (LGU) лежит в mnt/
. LGU — южнокорейский мобильный оператор. Если копнуть глубже через favicon, то получается, что KIM сначала взломал SECUREKI, компанию, которая обеспечивает LGU многофакторной аутентификацией, а потом через нее пробрался уже в сеть LGU.
История поисковых запросов в Google точно заслуживает пристального внимания. Особенно все, что связано с chacha20
и arc4
. Да и временные файлы Chrome стоит покопать — кто знает, что там можно нарыть.
Похоже, KIM качает свои Dev Tools вот с этого ресурса:
https://bafybeih65no5dklpqfe346wyeiak6wzemv5d7z2ya7nssdgwdz4xrmdu6i.ipfs.dweb.link
Лицензию на IDA Pro он стащил с заброшенного и не работающего больше сайта в Tor.
В конфигах Google Chrome содержатся вот такие ссылки. То есть для доступа к сайтам могли использоваться личные учетки Google. А что насчет аккаунта wwh1004
на GitHub? Может, тоже их? И еще вопросик: не использовала ли группировка Google Pay, чтобы оплатить VPN?
"https://accounts.google.com:443, https://[*.]0x1.gitlab.io":
"https://accounts.google.com:443, https://[*.]aldeid.com":
"https://accounts.google.com:443, https://[*.]asawicki.info":
"https://accounts.google.com:443, https://[*.]devglan.com":
"https://accounts.google.com:443, https://[*.]edureka.co":
"https://accounts.google.com:443, https://[*.]johnwu.cc":
"https://accounts.google.com:443, https://[*.]majorgeeks.com":
"https://accounts.google.com:443, https://[*.]maskray.me":
"https://accounts.google.com:443, https://[*.]namecheap.com":
"https://accounts.google.com:443, https://[*.]qwqdanchun.com":
"https://accounts.google.com:443, https://[*.]rakuya.com.tw":
"https://accounts.google.com:443, https://[*.]redteaming.top":
"https://accounts.google.com:443, https://[*.]reversecoding.net":
"https://accounts.google.com:443, https://[*.]shhoya.github.io":
"https://accounts.google.com:443, https://[*.]sparktoro.com":
"https://accounts.google.com:443, https://[*.]tutorialspoint.com":
"https://accounts.google.com:443, https://[*.]wiseindy.com":
"https://accounts.google.com:443, https://[*.]wwh1004.com":
"https://accounts.google.com:443, https://[*.]wwh1004.github.io":
"https://pay.google.com:443, https://[*.]purevpn.com":
"https://pay.google.com:443, https://[*.]purevpn.com.tw":
"https://pay.google.com:443, https://[*.]zoogvpn.com":
KIM пользуется Google Translate, чтобы переводить сообщения об ошибках на китайский. В его истории Chrome есть целый ряд сайтов правительства и военных структур Тайваня.
Сертификат граждан Южной Кореи нуждается в более глубоком изучении, особенно интересен момент с выделением профессоров университетов. Почему их так отдельно пометили?
В папке work/
хранятся файлы, которые KIM перекидывал между своими Windows- и Linux-машинами. Там лежат лоадеры Cobalt Strike и реверс‑шеллы на PowerShell, а также скомпилированный код Onnara и ее модули для проксирования в государственную сеть и не только.
В директории work/
можно найти много интересных файлов (.
), которые приоткрывают завесу над интересами, поисковыми привычками и посещаемыми сайтами пользователя KIM. Среди прочего мы узнаём, что его часто заботит выживание Cobalt Strike (CS), он интересуется, почему Куньмин находится в центре Центральной инспекционной группы, и неравнодушен к разным проектам на GitHub. Заходит он и на freebuf.
, xakep.
, а Google Translate использует для чтения accessibility-moda-gov-tw
через translate.
, переводя с тайваньского.
Файлы voS9AyMZ.
и Black.
требуют тщательной проверки. Их бинарные хеши пока неизвестны VirusTotal, но сами названия уж больно подозрительные:
2bcef4444191c7a5943126338f8ba36404214202 payload.bin
e6be345a13641b56da2a935eecfa7bdbe725b44e payload_test.bin
3e8b9d045dba5d4a49f409f83271487b5e7d076f s.X64.bin
В bash_history
— SSH-подключения к компьютерам в локальной сети.
Пит Хегсет бы сказал: «У него сейчас все чисто с OPSEC».
Артефакты
В этом разделе разбираемся с шестью бэкдорами и артефактами от Кима. Это еще не финальная версия и не полный список. Это только начало, чтобы заинтересовать тебя и помочь лучше понять, как действует Кимсуки и какие инструменты использует.
Генератор против контрразведки
-
Где лежит:
vps/
var/ www/ html/
Инструмент разворачивает фишинговый HTTPS-сайт на домене, который напоминает знакомый жертве адрес. Потом жертве с dcc.
отправляют ссылку на этот фейковый сайт. Злоумышленник надеется, что жертва введет свои логин и пароль на его сайте.
Финальная переадресация жертвы уводит ее с фишингового сайта на легальный веб‑сайт. Там он всегда видит ошибку входа.
Это целенаправленная атака, и ее автору пришлось потрудиться, чтобы найти такой URI на легальном сайте https://
.
Плюс этого трюка в том, что жертва увидит ошибку от https://
(которую он знает и которой доверяет), хотя его данные на самом деле утекли на фишинговый сайт.
- config.php — хранит длиннющую черную базу айпишников (и другие списки), чтобы такие компании, как Trend Micro и Google, не смогли найти фишинговый сайт.
- generator.php — это удаленный интерфейс для управления фишинговой атакой. Доступ к нему можно получить через заданный пароль. Однако хитрость в том, что куки здесь зашиты в коде, и в админку можно зайти без пароля, просто подставив нужное значение куки.
curl -v --cookie "HnoplYTfPX=x" https://phishing-site/generator.php
Найти такие фишинговые сайты в интернете элементарно:
curl -v --cookie "HnoplYTfPX=x" https://phishing-site/logs.php
Бэкдор в ядре Tomcat
-
Где лежит:
mnt/
hgfs/ Desktop/ tomcat20250414_ rootkit linux234/
Это бэкдор уровня ядра. Он позволяет злоумышленнику удаленно получить доступ к системе и остаться незаметным. В арсенале есть клиент (tcat.
), серверная часть LKM (vmwixs.
) и пользовательский бэкдор (master.
).
Клиент общается с сервером жертвы напрямую по TCP. Загруженный модуль ядра (LKM) отлавливает любые TCP-соединения, которые совпадают с определенной комбинацией TCP-SEQ и IP-ID. Для связи со своим пользовательским бэкдором master.
в юзерспейсе LKM использует /
.
Мастер‑пароль: Miu2jACgXeDsxd
; клиент использует !
.
Скрипт tomcat20250414_rootkit_linux2345/
на лету генерирует новые секретные ID и строки для каждой инсталляции и сохраняет их в install.
. Главный пароль зашит в коде и неизменен.
-
work/common.c — компилируется как в клиенте, так и в мастере. Тут полно старых приватных ключей. Новый бэкдор генерит эти ключи динамически (глянь
install_common.
).c - Ikm — vmwfxs.mod.c — это так называемая «заготовка» LKM, которая позволяет перехватывать нужные функции ядра.
- Ikm — main.c — тут происходит секретная магия: прячутся процессы, сетевые коннекты и файлы.
-
Ikm — hkcap.c — создает
/
для общения с юзерспейсом:proc/ acpi/ pcicard
echo -n "${DECODEKEY}" > /proc/acpi/pcicard
Модуль ядра перехватывает каждое новое соединение по TCP и проверяет, используется ли секретный TCP-SEQ и IP-ID (причем на любом порте!). Эта проверка выполняется в функции syn_active_check
.
Поле размера окна TCP как раз используется, чтобы настроить бэкдор‑протокол (чаще всего это SYN_KNOCK
или SYN_KNOCK_SSL
).
Если условие выполняется, стартуют два следующих этапа:
- Запускается юзерленд‑процесс
master.
и передаетc MASTER_TRANS_STRAIGHT_ARGV
в качестве параметра-m
. - Это перенаправляет TCP-поток на процесс
master.
в пространство пользователя, фактически крадя его у целевого сервиса.c
Таким образом, master.
просто слепо исполняет команды атакующего.
- master — master.c — пользовательский процесс, скрытый на сервере жертвы. Он принимает перенаправленный из LKM сетевой поток, выполняет SSL-рукопожатие и после него — аутентификацию по паролю. Предоставляет стандартный набор функций: запуск root-shell или проксирование соединений во внутреннюю сеть.
-
client — tcat.c — здесь лежат все функции, нужные, чтобы «стучаться» в LKM (бэкдор) на машине жертвы через TCP-SEQ + IP-ID и устанавливать SSL-соединение с процессом
master.
, который запускается (через LKM) на сервере жертвы.c - client — kernel.c — здесь хранятся предопределенные и засекреченные номера TCP-SEQ и IP-ID. Любая комбинация из них может применяться для использования бэкдора. Эти цифры не генерятся динамически и одинаковы для каждой установки.
- client — protocol.c — содержит всякие заглушки и статические строки, чтобы подключиться к бэкдору через протоколы SMTP, HTTP или HTTPS (TLS).
char smtp_el[] = "250-example.com\r\n250-STARTTLS\r\n250 SMTPUTF8\r\n";char smtp_tls1[] = "220 Ready to start TLS\r\n";char smtp_starttls[] = "starttls\r\n";char smtp_hellol] = "HELO Alicelr\n";
Засечь LKM на локальной машине — проще простого.
Удаленное обнаружение LKM может быть тоже несложным делом, но тут нужна дополнительная проверка: аутентификация по паролю происходит после SSL-рукопожатия.
Таким образом, при подключении с заранее известными значениями TCP SEQ=920587710 и IP-ID=10213 к любому целевому порту (включая те, где обычно нет TLS, — 80, 22, 25) LKM перехватывает соединение и передает его в master.
. Дальше master.c поднимает TLS и после рукопожатия проводит аутентификацию и предоставляет шелл или прокси.
Как проверить наличие бэкдора:
- Устанавливаем TCP-соединение.
- Отправляем
TLS-CLIENT-HELLO
. - Если сервер скомпрометирован, он ответит корректным
TLS-SERVER-HELLO
, а любой другой сервер этого не сделает.
Личный маяк Cobalt Strike
-
Где лежит:
mnt/
hgfs/ Desktop/ 111/ beacon
Это кастомный Cobalt Strike C2 Beacon. Исходный код разрабатывался в среде IntelliJ IDEA IDE. В beacon/.
хранятся ссылки на открытые файлы, их позиции и историю последних поисковых запросов проекта. Последние изменения в код вносились в июне 2024 года.
В файле config.
— два бинарных блоба с конфигами для Cobalt Strike. Эти блобы валидны, и их можно расшифровать с помощью скрипта CobaltStrikeParser. Внутри блобов обнаружатся следующие настройки:
- BeaconType: HTTP
- Port: 8172
- SleepTime: 60842
- MaxGetSize: 1048576
- Jitter: 0
- MaxDNS: Not Found
- PublicKey_MD5: c5b6350189a4d960eee8f521b0a3061d
- C2Server: 192.168.179.112,/dot.gif
- UserAgent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; BOIE9; ENUSSEM)
- HttpPostUri: /submit.php
- Watermark_Hash: BeudtKgqn1m0Ruvf+VYxuw==
- Watermark: 126086
В версии KIM также есть ранняя ревизия кода, который в 2025 году встроили в троян LKM (hkcap.
). Но она недоделанная: не хватает нескольких ключевых файлов, например config.
.
В поддиректории /
лежат старые версии некоторых файлов.
ToyBox для Android
KIM активно трудится над ToyBox для Android. Похоже, что этот проект разошелся с официальным репозиторием ToyBox на GitHub где‑то с коммита вот с этим ID:
896fa846b1ec8cd4895f6320b56942f129e54bc9
Мы пока не выяснили, для чего предназначены многочисленные модификации ToyBox.
Приглашаем комьюнити разобраться.
Ivanti Control, он же RootRot
-
Где лежит:
mnt/
hgfs/ Desktop/ ivanti_control
Представляем исходный код клиента для доступа к публично известному бэкдору.
В 2017 году парни из Synacktiv по ошибке приняли закладку за уязвимость. Но позже выяснилось, что это действительно был имплант, оставленный злоумышленниками.
Он называется RootRot.
Этот запрос ответит словом HIT
, если бэкдор активен:
curl -ksi --cookie "DSPSALPREF=cHJpbnRmKCJISVQiKTsK" "https://HOST/dana-na/auth/setcookie.cgi"
Bushfire
-
Где лежит:
/
mnt/ hgfs/ Desktop/ exp1_admin. py
Этот файл также содержится в ivanti-new-exp-20241220.
.
Это эксплоит для Ivanti, возможно, для CVE-2025-0282, CVE-2025-0283 или CVE-2025-22457. Пейлоад устанавливает бэкдор.
Недавно ребята из Mandiant засекли в дикой природе интересный пейлоад. Они приписывают его группировке UNC5221, связанной с Китаем.
Скрипт exp1_admin.
использует те же команды iptables, которые Mandiant нашли в дикой природе.
Эксплоит идет в комплекте с документацией, которая в переводе звучит так: «Свяжись с нами, если эксплоит не сработает».
Это может указывать на связи между группировками в разных государствах: возможно, они обмениваются кодом и оказывают друг другу поддержку.
Этот пейлоад также открывает удаленный доступ к скомпрометированной системе. Интересное начинается на строке 2219, где генерятся ключи и магические значения:
- ключ имеет всего 2064 различных комбинаций (менее 31 бит стойкости);
- магическое значение имеет (26 × 2 + 10)3 различных комбинаций (менее 18 бит стойкости).
Шифрование происходит на 85-й строке, и это... XOR с 31-битным ключом!
Функцию detect_door
(строка 335) можно использовать для удаленного обнаружения бэкдора.
Заметь, что, чтобы постучаться в бэкдор, нужно только магическое значение, а не ключ. Оно передается в первых 24 битах ClientRandom в сообщении TLS Client Hello. Шанс, что обычный ClientRandom будет иметь вот такую начальную 24-битную комбинацию, — примерно 1 к 70.
SpawnChimera и газета The Hankyoreh
-
Где лежит:
mnt/
hgfs/ Desktop/ New folder/ 203. 234. 192. 200_client. zip
Клиент получает доступ к бэкдору SpawnChimera через порт‑нокинг.
IP-адрес 203.234.192.200 принадлежит hani.
(The Hankyoreh) — либеральной газете из Южной Кореи.
Как работает port knocking, можно посмотреть в client.
на 152-й строке.
Еще он спрятан в TLS Client Hello, в 32-байтовом поле ClientRandom
, но с новой особенностью: первые 4 байта должны содержать правильный CRC32 оставшихся 28 байт.
random = os.urandom(28)client_hello[15:43] = randomjamerc = int("Ob"+"1"*32, 2) - zlib.crc32(random)client_hello[11:15] = struct.pack('!I', jamerc)
Приглашаем сообщество копнуть поглубже.
Кто такой Kimsuky
Мы пришли к выводу, что перед нами Kimsuky: цепочка артефактов и намеков сложилась в их фирменный почерк — слишком уж точное совпадение, чтобы приписать его кому‑то еще.
Среди улик — настройка локали: выставлен корейский язык. К тому же куча конфигов для доменных имен, которые связаны с атаками Kimsuky. Найденный код перекликается с тем, что использовали в предыдущих кампаниях.
Еще одна интересная деталь — у злоумышленника четкий рабочий график: каждый день он подключается примерно в 09:00 и исчезает к 17:00 по времени Пхеньяна.
Операция Covert Stalker
Операция Covert Stalker — так в южнокорейской ИБ‑компании АhnLab окрестили многомесячную фишинговую атаку из КНДР, направленную против отдельных личностей и организаций в Южной Корее. Жертвы — журналисты, исследователи, политики и другие.
На системе злоумышленника мы обнаружили настройки веб‑сервера для домена, связанного с этой атакой.
SSLCertificateFile /etc/letsencrypt/live/nid-security.com/cert.pem
Украденные сертификаты GPKI
В начале 2024 года специалисты из S2W наткнулись на новую малварь под названием Troll Stealer, написанную на Go. Она умеет утаскивать GPKI-сертификаты (Government Public Key Infrastructure) и ключи, которые хранятся на зараженных девайсах.
GPKI — это такая система, благодаря которой чиновники Южной Кореи могут подписывать документы и подтверждать их подлинность. Так вот, мы нашли тысячи таких файлов на рабочей машине участника KIM.
subject=C=KR, 0=Government of Korea, OU=Ministry of Unification, OU=people, CN=Lee Min-kyung
issuer=C=KR, 0=Government of Korea, OU=GPKI, CN=CA131100001
-
Где лежит:
work/
иhome/ user/ Desktop/ desktop/ uni_certs work/
home/ user/ Downloads/ cert/
Владелец машины создал программу на Java, чтобы взломать пароли, защищающие ключи и сертификаты.
136박정욱001_env.key Password $cys13640229
041????001_env.key Password !jinhee1650!
041????001_sig.key Password ssa9514515!!
[ ... ]
-
Где лежит:
work/
home/ user/ Downloads/ cert/ src/ cert. java
Атака на похожие цели
Владелец машины атаковал те же цели, что в прошлом приписывали кибератакам группировки Kimsuky.
Naver
Naver Corporation — это южнокорейская корпорация, запустившая кучу разных сервисов. У них есть поисковик, обогнавший все местные аналоги, мобильные платежи через Naver Pay, карты в духе Google Maps, почтовый сервис и еще много чего интересного.
Naver уже не первый раз становится мишенью для атаки со стороны Северной Кореи. В 2024 году Zscaler раскопали новую хромовую расширюху под названием TRANSLATEXT от киберпреступной группировки Kimsuky. Это расширение может впендюрить произвольные JS-скрипты при открытии определенных страниц. Например, когда ты заходишь на страницу логина Naver — nid.naver.com, расширение закидывает в браузер auth.js и тихо сливает твои логин — пароль.
Фишинговая атака, о которой рассказывается в разделе 2.1, использует домен nid.navermails.com в качестве основного URL. Вся загвоздка в том, что этот домен крепко связан с Kimsuky, как выяснили ребята из AhnLab.
Министерство объединения
Одной из регулярных мишеней Kimsuky является Министерство объединения Южной Кореи. Злоумышленники смекнули, как подловить GPKI на взломанных паролях, и накатали специально заточенный под это вордлист для перебора. Логи четко показывают, что эти пароли гоняли против домена министерства.
unikorea123$
unikoreal!! unikorea100
unikorea625!
[...]
-
Где лежит:
work/
home/ user/ Downloads/ cert/ dict/ pass. txt
AiTM-атака на пользователей Microsoft: гипотеза
В середине 2022 года Microsoft и Zscaler обнаружили атаку AiTM. Атакующие использовали веб‑сервер, который работает как прокси между настоящей страницей входа и жертвой.
Жертвам приходило письмо с заманухой в виде HTML-вложения. Открываешь его, и тебя тут же перекидывает на прокси через HTTPS. Прокси, в свою очередь, перекидывает любой запрос на серверы Microsoft, заново шифруя данные через HTTPS.
Как только жертва логинилась, прокси подхватывал ее сессионные куки и перенаправлял на сервер Microsoft.
Украденная кука валидна и может быть использована злоумышленником без необходимости проходить авторизацию с MFA. Для этой кампании применялся домен websecuritynotice.
.
Конкретно этот домен мы в дампе не обнаружили, но нашли очень похожий (заметь лишнюю букву s):
subject=CN=*.websecur1tynotices.com
-
Где лежит:
vps/
etc/ letsencrypt/ live/ websecuritynotices. com
Тактика, техника и процедуры (TTP), схожесть доменных имен и действия после взлома (мошенничество с платежами и так далее) указывают на явную связь с группой Kimsuky.
KIM — китаец?
KIM переводит корейский на упрощенный китайский через Google Translate. Похоже, без перевода он понимает по‑корейски совсем немного.
KIM работает по расписанию китайских праздников. С 31 мая по 2 июня отмечали праздник драконьих лодок, и в это время KIM взял передышку, тогда как в Северной Корее это был обычный рабочий день.
При этом утилита hindsight показала, что в настройках Chrome у KIM выставлено корейское стандартное время.
Забавные факты и приколы
В сентябре 2023 года некто под псевдонимом KIM попытался приобрести домен nextforum-online.
на Namecheap.com. Оплата биткоином, что может пойти не так?
Пару дней спустя Namecheap заблокировал домен, не объясняя причину. Когда KIM попытался восстановить доступ, в Namecheap сказали следующее:
Чтобы подтвердить легитимность зарегистрированных доменов, предоставь нам следующую информацию:
Цель регистрации домена.
Документы, подтверждающие полномочия действовать от имени Microsoft, или же подтверждение того, что данные домены не относятся к этой компании.
Что ж, получается, что Namecheap не такой уж непробиваемый!
Еще занятный факт: в 2020 году, когда домен websecuritynotice.
использовали в фишинговой кампании, владелец создал для этих атак несколько поддоменов с реалистичными адресами.
login.websecuritynotice.com. IN A 80.240.25.169
wwwoffice.websecuritynotice.com. IN A 80.240.25.169
www-microsoft.websecuritynotice.com. IN A 80.240.25.169
prod-msocdn-25ae5ec6.websecuritynotice.com. IN A 80.240.25.169
prod-msocdn-55e5273a.websecuritynotice.com. IN A 80.240.25.169
prod-msocdn-84311529.websecuritynotice.com. IN A 80.240.25.169
prod-msocdn-c7b8a444.websecuritynotice.com. IN A 80.240.25.169
aadcdn-msauth-84311529.websecuritynotice.com. IN A 80.240.25.169
sts-glb-nokia-346189f1.websecuritynotice.com. IN A 80.240.25.169
res-cdn-office-84311529.websecuritynotice.com. IN A 80.240.25.169
aadcdn-msftauth-25ae5ec6.websecuritynotice.com. IN A 80.240.25.169
aadcdn-msftauth-55e5273a.websecuritynotice.com. IN A 80.240.25.169
aadcdn-msftauth-84311529.websecuritynotice.com. IN A 80.240.25.169
r4-res-office365-55e5273a.websecuritynotice.com. IN A 80.240.25.169
r4-res-office365-84311529.websecuritynotice.com. IN A 80.240.25.169
Однако в 2025 году KIM поленился и пользовался только главным доменом:
http://www.websecuritynotices.com/request.php?i=amhraW0xQGtsaWQub3Iua3I=
Параметр i
— это закодированный в Base64 адрес электронной почты получателя. В нашем случае это jhkim1@klid.
.
В январе 2025 года этот домен указывал на IP 104.167.16.97. А в марте 2025-го домен download.
тоже резолвился в этот же IP.
На VirusTotal есть его родственник: sharing.
. Вот список URL-адресов, которые с этим доменом связаны:
https://sharing.sponetcloud.com/logo.png?v=bG11Mjc2MUBzcG8uZ28ua3I=
https://sharing.sponetcloud.com/bigfile/v1/urls/view?shareto=aGFudGFlaHdhbkBzcG8uZ28ua3I=
Параметры снова зашифрованы в Base64, но при декодировании видим адреса lme2761@spo.
и hantaehwan@spo.
. Оба адресата работают в прокуратуре Южной Кореи.
Те же самые адреса электронной почты (и еще куча других) всплывают на VPS Кима в файле request_log.
:
hantaehwan@spo.go.kr
paragon74@spo.go.kr
baekdu475@spo.go.kr
[...]
Не может ли это быть подделкой? KIM ведь мог специально направить часть своих доменов на IP-адреса, которые когда‑то были засвечены в связке с Kimsuky.
Например, у nid-security.
вот такая история хостинга DNS:
nid-security.com. IN A 27.255.80.170 (observation date: 2024-11-05) nid-security.com. IN A 45.133.194.126 (observation date: <= 2025-05-09)
nid-security.com. IN A 185.56.91.21
nid-security.com. IN A 192.64.119.241
*.nid-security.com. IN A 45.133.194.126
lcs.nid-security.com. IN A 27.255.80.170
lcs.nid-security.com. IN A 45.133.194.126
nid.nid-security.com. IN A 27.255.80.170
nid.nid-security.com. IN A 45.133.194.126
www.nid-security.com. IN A 45.133.194.126
rcaptcha.nid-security.com. IN A 27.255.80.170
rcaptcha.nid-security.com. IN A 45.133.194.126
zwkd3e3wbc.nid-security.com. IN A 45.133.194.126
Лог фишинга на VPS от 2 декабря 2024 года засветил вот такой домен:
https://nid.nid-security.com/bigfileupload/download?h=UJw39mzt3bLZ0ESuajYK1h-G1U1FavI1vmLUbNvCrX80-AtVgL7TIsphr1hlrvKOdOR-dbnMHVV7NJ4N
В этом месяце домен резолвился на 45.133.194.126. Так что же, 27.255.80.170 был просто уловкой?
И напоследок еще одна забавная деталь. Когда Kimsuky регистрировал домен websecuritynotices.
, его почта засветилась в записях SOA:
websecuritynotices.com IN SOA ns4.1domainregistry.com dysoni91.tutamail.com
Kimsuky, ты не хакер!
Кто такой настоящий хакер? Это очень умный человек, который кайфует от того, что использует технологии не по их прямому назначению, — и делает это без вреда для других. У него нет политической повестки и нет корыстных мотивов. Он не берет денег и не гонится за наградами. Не служит никому и не преследует никаких целей, кроме одной — выразить себя.
То есть художник.
Kimsuky, ты не хакер! Тобой движет жажда наживы — ты хочешь набить карманы своим хозяевам и служить их политической повестке. Ты воруешь у других и заботишься только о своих. Ты ставишь себя выше всех остальных. Ты морально прогнил!
Мы — хакеры, и мы — полная противоположность тебе. В нашем мире мы все равны. У нас нет цвета кожи, национальности и политической повестки. Мы никому не служим. Мы взламываем, чтобы выразить себя и поделиться знаниями с другими такими же творцами. Чтобы вносить вклад, делиться и расширять знания всего человечества. Ради самой красоты передачи данных.
А ты лезешь в сети ради всего неправильного.
— Saber и cyb0rg