Multigrain: особенности вредоносной программы для PoS-терминалов
Multigrain – это вредоносная программа для PoS -терминалов, которая специализируется на краже информации с банковских карт при использовании техник RAM-Scraping (она напрямую обращается к ОЗУ из определенных процессов для получения информации о картах). Это стало очень популярным методом, т.к. международное законодательство запрещает хранить эту информацию на диске (даже временно).
Другая особенность Multigrain заключается в том, что он использует DNS-обращения для общения с внешним миром (и таким образом он может отправлять украденную информацию). В этой статье мы проанализируем саму по себе вредоносную программу, а также, каким образом она выполняет свои коммуникации.
В апреле этого года FireEye опубликовала анализ данной вредоносной программы и, похоже, это был первый случай, когда они обнаружили вариант Multigrain. В этой статье анализ относился к образцу, который в антивирусной лаборатории PandaLabs обнаружили в ноябре 2015 года (MD5: A0973ADAF99975C1EB12CC1E333D302F), и с тех пор мы были в состоянии обнаруживать новые варианты или обновления данной вредоносной программы, т.к. принципиально они работали одинаково.
Multigrain в подробностях: технический анализ
Мы начали анализировать Multigrain, потому что данный код, показывающий характеристики RAM-Scraping, типичен для PoS-зловредов. Мы можем ясно увидеть это в процедуре 00405 A 10, показанной ниже.
В данной процедуре мы находим типичные вызовы от процесса, который осуществляет RAM-Scraping в памяти запущенных процессов:
· CreateToolhelp 32 Snapshot для получения указателя списка процессов;
· Process 32 FirstW и Process 32 NextW для получения снимка списка процессов после вызова предыдущего API;
· OpenProcess используется позже для получения списка страниц памяти с VirtualQueryEx;
· Наконец, с помощью ReadProcessMemory Вы можете прочитать содержимое с предыдущих страниц.
Как только получен буфер, используя контент с каждой страницы, зловред будет выполнять соответствующий «скрейпинг». Для этого он использует (в этой же процедуре) второй псевдокод:
Если возможные последовательности TRACKS1/2 обнаружены, связанные с кодом с магнитной полосы банковской карты в буферах от анализируемой памяти, осуществляется вызов функций sub_406100 и sub_405D10. Теперь вредоносная программа готова подготовить данные таким образом, чтобы их можно было позже украсть.
Данная вредоносная программа для PoS интересуется только двумя процессами, которые называются «spcwin.exe» и «brain.exe». Если ни один из них не обнаружен, то «скрэйпинг» не будет осуществляться.
Эксфильтрация данных
Эксфильтрация осуществляется во время DNS-обращений (UDP, порт 53) из процедуры 00402C40, что показано на следующем псевдокоде:
Видимо, утечка информации осуществляется в трех различных точках (две процедуры) из программы:
В первой процедуре (адрес 00401DA0), используется субдомен «install.» для украденной информации. Во второй процедуре (адрес 00402580) для этого используется субдомен «log.».
В этих процедурах эксфильтрации мы находим различные ссылки на функции, которые кодируют информацию с использованием «base32». Это связано с тем, что для того чтобы украсть информацию с банковской карты, она сперва шифруется с использованием «base32», а после этого выполняются DNS-запросы в формате: install.<base32_CCs>.domain
Сетевая информация
По всей видимости, домен для образца: dojfgj . com
Если мы разберем этот домен, то мы можем увидеть, что он ведет к внутреннему IP-адресу «192.168.0.3». Домен связан с двумя DNS-серверами. Для получения их актуальных адресов нам следует сделать «whois»:
$ whois ns2.dojfgj.com
Server Name: NS1.DOJFGJ.COM
IP Address: 104.156.246.159
Команда “ traceroute ” данного IP -адреса показывает нам его происхождение:
$ traceroute 104.156.246.159
traceroute to 104.156.246.159 (104.156.246.159), 30 hops max, 60 byte packets
1 104.131.0.253 (104.131.0.253) 0.423 ms 104.131.0.254 (104.131.0.254) 0.404 ms 0.437 ms
2 162.243.188.229 (162.243.188.229) 0.422 ms 0.394 ms 162.243.188.241 (162.243.188.241) 0.293 ms
3 xe-0-9-0-17.r08.nycmny01.us.bb.gin.ntt.net (129.250.204.113) 3.503 ms 4.078 ms 4.102 ms
4 ae-2.r25.nycmny01.us.bb.gin.ntt.net (129.250.3.97) 1.160 ms ae-3.r25.nycmny01.us.bb.gin.ntt.net (129.250.6.208) 1.226 ms 1.171 ms
5 ae-9.r22.asbnva02.us.bb.gin.ntt.net (129.250.2.149) 6.985 ms 6.926 ms 7.013 ms
6 ae-0.r23.asbnva02.us.bb.gin.ntt.net (129.250.3.85) 6.952 ms 7.091 ms 7.057 ms
7 ae-1.r20.miamfl02.us.bb.gin.ntt.net (129.250.2.87) 42.672 ms 33.314 ms 33.257 ms
8 ae-1.r05.miamfl02.us.bb.gin.ntt.net (129.250.2.185) 35.530 ms 35.327 ms 38.280 ms
9 xe-0-6-0-0.r05.miamfl02.us.ce.gin.ntt.net (129.250.207.174) 32.063 ms 31.912 ms 31.755 ms
10 * * *
11 104.156.246.159. vultr . com (104.156.246.159) 33.398 ms 31.757 ms 32.283 ms
Как мы можем видеть, он соответствует интернет-провайдеру в Майами, который управляет диапазоном IP -адресов:
NetRange: 104.156.244.0 – 104.156.247.255
CIDR: 104.156.244.0/22
NetName: NET-104-156-244-0-22
NetHandle: NET-104-156-244-0-1
Parent: CHOOPA (NET-104-156-224-0-1)
NetType: Reassigned
OriginAS:
Organization: Vultr Holdings, LLC (VHL-57)
Живучесть
Чтобы оставаться «живучим» в системе (Windows PoS), анализируемая вредоносная программа устанавливает себя автоматически в качестве службы и выбирает имя «Windows Module Extension», как видно на следующем скриншоте (процедура 00406C20):
Хакер может выполнять исключения в то время, когда он регистрирует себя в качестве службы: он проверяет текущий регион с использованием «ipinfo.io» и в зависимости от ответа система может регистрировать в качестве службы или нет. Это особенно полезно в том случае, если хакер, например, хочет избежать выполнения атаки на PoS-системы в определенных странах.
Вредоносная программа акцептирует «i» в качестве параметра (из «install»), в этом случае она устанавливает процесс «скрэйпинга» и отправляет украденную информацию.
Если данный параметр не указан («i»), и в том случае, если не найдены запущенными процессы «spcwin.exe» или «brain.exe», то служба не будет устанавливаться, причем в дополнение к этому вредоносная программа будет автоматически уничтожена. Оба процесса относятся к программному обеспечению PoS.
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.