TGViewer
Четыре луча Четыре луча @four_rays · 4.02K subscribers
Post #12 1.5K
Connect like there is no firewall. Securely. Part_2.

Ранее мы рассказывали про утилиту gsocket и как ее детектить на хосте. Сейчас поговорим про детект на сети.

В число особенностей gsocket (важных для сетевого детекта) входит то, что для коммуникации он использует определенный протокол общения зараженного устройства и сервера управления.
Важнейшие структуры: gs_connect, gs_listen, gs_status, gs_start и gs_accept.

Назначение этих структур понятно из названий, приведем код.
struct _gs_connect
{
union {
struct _gs_hdr_lc hdr;
struct
{
uint8_t type;
uint8_t version_major;
uint8_t version_minor;
uint8_t flags;
uint8_t reserved1[4];
uint8_t reserved2[8];
uint8_t token_NOTUSED[GS_TOKEN_SIZE]; // 16 bytes
uint8_t addr[GS_ADDR_SIZE]; // 16 bytes
};
};
uint8_t reserved3[16];
uint8_t reserved4[64];
};


struct _gs_listen    /* 128 bytes */
{
union {
struct _gs_hdr_lc hdr;
struct
{
uint8_t type;
uint8_t version_major;
uint8_t version_minor;
uint8_t flags;
uint8_t reserved1[4];
uint8_t reserved2[8];
uint8_t token[GS_TOKEN_SIZE]; // 16 bytes
uint8_t addr[GS_ADDR_SIZE];
};
};
uint8_t reserved3[16];
uint8_t reserved4[64];
};


struct _gs_start
{
uint8_t type;
uint8_t flags;
uint8_t reserved[2];
uint8_t reserved2[28];
};


struct _gs_status
{
uint8_t type;
uint8_t err_type;
uint8_t code;
uint8_t reserved[1];
uint8_t msg[28];
};


struct _gs_accept
{
uint8_t type;
uint8_t reserved[3];
uint8_t reserved2[28];
};

В сетевом трафике такие структуры обязательно привлекут внимание, причём не столько "содержательной" частью, как версия или флаги, сколько большим количеством "нулей" — зарезервированных байт.

Сущность type (из приведенных выше структур) имеет конечное количество значений (типов сообщений):
GS_PKT_TYPE_LISTEN  (0x01)  
GS_PKT_TYPE_CONNECT (0x02)
GS_PKT_TYPE_PING (0x03)
GS_PKT_TYPE_PONG (0x04)
GS_PKT_TYPE_START (0x05)
GS_PKT_TYPE_ACCEPT (0x06)
GS_PKT_TYPE_STATUS (0x07)


Детектирующую логику можно построить на последовательности зарезервированных байт, а также определенных типах сообщений.

Но злоумышленники не стоят на месте. Ведь можно просто заблокировать домены, связанные с gsocket (например), которые резолвит данная утилита.

Нам на анализ попалось несколько кастомных версий, которые устанавливают соединение ровно так же, но используют для взаимодействия не "легитимную сеть релей серверов", а свои сервера управления, что и позволило нам написать детектирующую логику на основании вышеуказанных структур.
Осталось переложить заданные структуры на язык описания детектирующей логики и радоваться, пока структура взаимодействия остается актуальной.
  • ❤ 11
  • ✍ 5
  • 🫡 5
  • 👾 2
  • 👍 1
More from @four_rays
  1. Sep 23, 2026💣 Click2Shell Click2Shell — это цепочка уязвимостей в WordPress, которая может привести к…
  2. Sep 14, 2026💣 Ржавый код: почему все переходят на Rust и когда аналитику можно его не реверсить Rust…
  3. Sep 11, 2026😳 DFIR diggin’ deeper: неочевидные источники артефактов при расследовании атак Когда стан…
  4. Sep 7, 2026😀 Call for Papers на технострим SOC Forum 2026 еще открыт! Темы: 1️⃣ Offense: актуальные…
  5. Aug 31, 2026☀️ Zimbra, все еще скрывающая боль Ранее мы уже рассказывали о расследовании «Zimbra, скры…
  6. Aug 19, 2026💡 Разберемся с непопулярными артефактами на OffZone 2026 Выбираете, какие выступления пос…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →