{"id":19794,"date":"2023-04-13T08:58:42","date_gmt":"2023-04-13T11:58:42","guid":{"rendered":"https:\/\/www.ethicalhacker.com.br\/site\/?p=19794"},"modified":"2023-04-13T08:58:44","modified_gmt":"2023-04-13T11:58:44","slug":"linkinglion-ligando-transacoes-de-bitcoin-a-ips","status":"publish","type":"post","link":"https:\/\/www.ethicalhacker.com.br\/site\/2023\/04\/basico\/linkinglion-ligando-transacoes-de-bitcoin-a-ips\/","title":{"rendered":"LinkingLion ligando transa\u00e7\u00f5es de Bitcoin a IPs?"},"content":{"rendered":"\n<p align=\"justify\">Algumas entidades misteriosas est\u00e3o operando na rede Bitcoin, e uma delas \u00e9 a LinkingLion. Essa entidade \u00e9 capaz de abrir conex\u00f5es com muitos n\u00f3s do Bitcoin usando quatro faixas de endere\u00e7os IP e ouvir as transa\u00e7\u00f5es anunciadas, o que pode permitir que ela associe transa\u00e7\u00f5es rec\u00e9m-transmitidas a endere\u00e7os IP de n\u00f3s. Essa entidade tem estado ativa desde 2018 e tamb\u00e9m est\u00e1 presente na rede Monero usando as mesmas faixas de endere\u00e7os IP. Embora n\u00e3o saibamos exatamente quem ou o que est\u00e1 por tr\u00e1s da LinkingLion, acredita-se que seja uma empresa de an\u00e1lise blockchain coletando dados para aprimorar seus produtos.<\/p>\n<p>\u00a0<\/p>\n<p align=\"justify\">Em um post anterior, eu observei uma entidade fazendo v\u00e1rias conex\u00f5es curtas e intermitentes com muitos n\u00f3s na rede P2P do Bitcoin. Chamei essa entidade de &#8220;Inbound Connection Flooder&#8221; e escrevi sobre minha observa\u00e7\u00e3o inicial nesse post. No entanto, ap\u00f3s uma inspe\u00e7\u00e3o mais detalhada do comportamento da entidade, acredito que essas conex\u00f5es curtas e intermitentes s\u00e3o apenas um sintoma do objetivo principal. Eu suspeito que essa entidade esteja rastreando a propaga\u00e7\u00e3o de transa\u00e7\u00f5es para tentar determinar qual n\u00f3 transmite qual transa\u00e7\u00e3o e, assim, associar transa\u00e7\u00f5es a endere\u00e7os IP.<\/p>\n<p>\u00a0<\/p>\n<p align=\"justify\">A LinkingLion usa endere\u00e7os IP de tr\u00eas faixas IPv4 \/24 e uma faixa IPv6 \/32 para se conectar a n\u00f3s que est\u00e3o escutando na rede Bitcoin. Todas essas faixas de endere\u00e7os IP s\u00e3o anunciadas pela AS54098, LionLink Networks. No entanto, as faixas pertencem a empresas diferentes com base nas informa\u00e7\u00f5es dos registros ARIN e RIPE.<\/p>\n<p>\u00a0<\/p>\n<p>162.218.65.0\/24: Fork Networking, LLC (forked.net) &#8211; ARIN Whois<br \/>209.222.252.0\/24: Castle VPN, LLC (castlevpn.com) &#8211; ARIN Whois<br \/>91.198.115.0\/24: Linama UAB (?) &#8211; RIPE Whois<br \/>2604:d500::\/32: Data Canopy (datacanopy.com) &#8211; ARIN Whois<\/p>\n<p>\u00a0<\/p>\n<p align=\"justify\">Fork Networking e Castle VPN s\u00e3o empresas com sede nos EUA, ambas de propriedade da mesma pessoa. Fork Networking oferece servi\u00e7os de hospedagem e coloca\u00e7\u00e3o, enquanto Castle VPN \u00e9 um provedor de VPN. Linama UAB \u00e9 uma empresa lituana sem presen\u00e7a na web. Data Canopy \u00e9 uma empresa com sede nos EUA que oferece centros de dados na nuvem e coloca\u00e7\u00e3o. Como as conex\u00f5es dessas faixas de endere\u00e7os IP compartilham comportamentos muito semelhantes, assume-se que s\u00e3o controladas ou alugadas pela mesma entidade. Chamamos essa entidade de &#8220;LinkingLion&#8221;, pois a AS LionLink Networks \u00e9 o fator comum desses IPs, e acredita-se que a entidade esteja tentando associar transa\u00e7\u00f5es a endere\u00e7os IP.<\/p>\n<p>\u00a0<\/p>\n<p align=\"justify\">No entanto, ainda \u00e9 incerto o motivo pelo qual a LinkingLion est\u00e1 interessada em vincular transa\u00e7\u00f5es a endere\u00e7os IP. Pode ser que estejam fazendo isso para ajudar a pol\u00edcia a rastrear atividades criminosas na rede.<\/p>\n<p>\u00a0<\/p>\n<p><strong>Comportamento<\/strong><\/p>\n<p align=\"justify\">Para analisar o comportamento do LinkingLion, foram registrados os dados de tr\u00e1fego de rede entre o meu n\u00f3 e os intervalos de endere\u00e7os IP do LinkingLion por cerca de cinco dias na primeira metade de mar\u00e7o de 2023. Nesse per\u00edodo, cerca de 200.000 conex\u00f5es foram abertas para o meu n\u00f3 a partir da entidade. Na se\u00e7\u00e3o a seguir, descreveremos o comportamento observado.<\/p>\n<p>\u00a0<\/p>\n<p><strong>Estabelecimento de conex\u00e3o e handshake<\/strong><\/p>\n<p align=\"justify\">Das quatro faixas de endere\u00e7os IP, a entidade usa os seguintes 812 endere\u00e7os (lista) para abrir conex\u00f5es TCP com muitos n\u00f3s de escuta do Bitcoin na rede:<\/p>\n<p>\u00a0<\/p>\n<p>162.218.65.11 &#8211; 162.218.65.254 (244 endere\u00e7os)<br \/>209.222.252.2 &#8211; 209.222.252.254 (253 endere\u00e7os)<br \/>91.198.115.3 &#8211; 91.198.115.62 (60 endere\u00e7os) + 91.198.115.114<br \/>2604:d500:4:1::2<br \/>2604:d500:4:1::3:2 &#8211; 2604:d500:4:1::3:fe (253 endere\u00e7os)<\/p>\n<p>\u00a0<\/p>\n<p align=\"justify\">O LinkingLion utiliza toda a faixa de portas ef\u00eameras (1024-65535), o que difere do comportamento padr\u00e3o de muitos sistemas operacionais (a maioria usa um subconjunto menor). Pode-se observar que o mesmo endere\u00e7o IP se conecta repetidamente, em alguns casos mais de 50 vezes, antes que a entidade mude para outro endere\u00e7o IP na mesma faixa de endere\u00e7os.<\/p>\n<p>\u00a0<\/p>\n<p align=\"justify\">Ap\u00f3s a etapa de handshake, o comportamento da entidade se divide em duas fases principais: a fase de transmiss\u00e3o de blocos e a fase de solicita\u00e7\u00e3o de blocos.<\/p>\n<p>\u00a0<\/p>\n<p><strong>Fase de transmiss\u00e3o de blocos<\/strong><\/p>\n<p align=\"justify\">A entidade come\u00e7a a enviar blocos imediatamente ap\u00f3s a conclus\u00e3o do handshake. Ela transmite blocos em grupos de 10 e sempre envia o bloco mais recente primeiro. A velocidade de transmiss\u00e3o \u00e9 relativamente constante e corresponde a cerca de 2 a 3 blocos por segundo. A entidade tamb\u00e9m transmite blocos inv\u00e1lidos. A transmiss\u00e3o de blocos dura cerca de 24 a 36 horas e termina abruptamente, sem enviar o bloco mais recente.<\/p>\n<p>\u00a0<\/p>\n<p><strong>Fase de solicita\u00e7\u00e3o de blocos<\/strong><\/p>\n<p align=\"justify\">Depois de terminada a transmiss\u00e3o de blocos, a entidade come\u00e7a a solicitar blocos. Ela envia mensagens getdata que solicitam 128 blocos de cada vez e se concentra em blocos recentes que n\u00e3o foram transmitidos anteriormente. As mensagens getdata s\u00e3o enviadas a uma taxa constante, cerca de uma por segundo, e n\u00e3o s\u00e3o interrompidas por respostas.<\/p>\n<figure class=\"m-3\">\n<figcaption><center class=\"text-muted\"><\/center><\/figcaption>\n<\/figure>\n<p>\u00a0<\/p>\n<p align=\"justify\">As solicita\u00e7\u00f5es de bloco podem se concentrar em blocos de uma \u00fanica altura, o que indica que a entidade est\u00e1 tentando obter todos os blocos em uma determinada altura. Por exemplo, uma solicita\u00e7\u00e3o pode incluir 128 blocos na altura 658501. As solicita\u00e7\u00f5es tamb\u00e9m podem se concentrar em blocos que cont\u00eam transa\u00e7\u00f5es espec\u00edficas. As transa\u00e7\u00f5es s\u00e3o identificadas pelo hash e podem estar relacionadas a endere\u00e7os espec\u00edficos ou transa\u00e7\u00f5es de interesse para a entidade.<\/p>\n<p align=\"justify\">\u00a0<\/p>\n<p>\u00a0<\/p>\n<figure class=\"m-3\"><img decoding=\"async\" class=\"img img-fluid figure-center-img rounded mx-auto m-1 d-block aligncenter\" src=\"https:\/\/b10c.me\/data\/observations\/06-linkinglion\/sequence-version-handshake.png\" alt=\"Sequence diagramm of the communication during the version handshake\" \/>\n<figcaption><center class=\"text-muted\"><\/center><\/figcaption>\n<\/figure>\n<p>\u00a0<\/p>\n<p><strong>Comunica\u00e7\u00e3o<\/strong><\/p>\n<p style=\"text-align: justify;\">Ap\u00f3s o handshake, cerca de 18% das conex\u00f5es abertas recebem um verack e permanecem abertas por mais tempo. Ap\u00f3s o handshake, um n\u00f3 do Bitcoin Core envia uma mensagem sendcmpct indicando suporte ao Compact Block Relay, uma mensagem ping, uma mensagem feefilter com a menor taxa de transfer\u00eancia que estamos interessados e uma mensagem getheaders solicitando novos cabe\u00e7alhos que o par pode saber. A entidade responde com uma mensagem pong e continua a responder durante a dura\u00e7\u00e3o da conex\u00e3o. Ela nunca inicia um ping por si mesma.<\/p>\n<p>\u00a0<\/p>\n<figure class=\"m-3\"><img decoding=\"async\" class=\"img img-fluid figure-center-img rounded mx-auto m-1 d-block aligncenter\" src=\"https:\/\/b10c.me\/data\/observations\/06-linkinglion\/sequence-after-verack.png\" alt=\"Sequence diagramm of the communication after the version handshake\" \/>\n<figcaption><center class=\"text-muted\"><\/center><\/figcaption>\n<\/figure>\n<p>\u00a0<\/p>\n<p style=\"text-align: justify;\">A partir daqui, dois comportamentos diferentes podem ser observados. Ou a entidade ouve as mensagens inv enviadas por n\u00f3s por at\u00e9 150 segundos (2 minutos e 30 segundos), ou ela nos envia um getaddr e ouve as mensagens inv e addr enviadas por n\u00f3s por at\u00e9 600 segundos (10 minutos) antes de fechar a conex\u00e3o. Em m\u00e9dia, enviamos 15 mensagens inv para a entidade durante as conex\u00f5es mais curtas, que s\u00e3o apenas inv. Durante as conex\u00f5es mais longas, que incluem inv e addr, enviamos em m\u00e9dia seis mensagens addr e 104 mensagens inv. No protocolo Bitcoin, as mensagens inv (invent\u00e1rio) s\u00e3o an\u00fancios de que novos blocos ou transa\u00e7\u00f5es est\u00e3o dispon\u00edveis. Ao receber um inv, um n\u00f3 pode solicitar o bloco ou a transa\u00e7\u00e3o se ainda n\u00e3o a conhecer. A entidade nunca solicita blocos ou transa\u00e7\u00f5es.<\/p>\n<p>\u00a0<\/p>\n<p style=\"text-align: justify;\">A dura\u00e7\u00e3o da conex\u00e3o apenas com inv \u00e9 semelhante para os tr\u00eas intervalos de endere\u00e7os IPv4. Muitas conex\u00f5es s\u00e3o encerradas ap\u00f3s 90 segundos ou 150 segundos. As conex\u00f5es dos 253 endere\u00e7os no intervalo IPv6 2604:d500:4:1::3 s\u00e3o principalmente encerradas ap\u00f3s 150 segundos, enquanto algumas s\u00e3o encerradas mais cedo, entre 90 e 150 segundos. As conex\u00f5es do 2604:d500:4:1::2 s\u00e3o encerradas quase uniformemente entre 0 e 90 segundos. Geralmente, n\u00e3o h\u00e1 endere\u00e7os IP especiais usados apenas para conex\u00f5es mais longas ou mais curtas. O \u00fanico destaque \u00e9 209.222.252.2, que s\u00f3 faz as conex\u00f5es mais longas de 150 segundos. O IP 162.218.65.219 \u00e9 not\u00e1vel por fazer o dobro do n\u00famero de conex\u00f5es dos outros IPs no mesmo intervalo de IP. As conex\u00f5es que incluem inv e addr solicitam endere\u00e7os com uma mensagem getaddr e originam-se apenas do 2604:d500:4:1::2 e 91.198.115.114. Elas s\u00e3o fechadas logo ap\u00f3s ficarem abertas por 600 segundos.<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<figure class=\"m-3\"><img loading=\"lazy\" decoding=\"async\" class=\"img img-fluid figure-center-img rounded mx-auto m-1 d-block aligncenter\" src=\"https:\/\/b10c.me\/data\/observations\/06-linkinglion\/histogram-connection-duration-by-ip-range.png\" alt=\"Connection duration per IP range, stacked\" width=\"638\" height=\"300\" \/>\n<figcaption><center class=\"text-muted\"><\/center><\/figcaption>\n<\/figure>\n<p>\u00a0<\/p>\n<p><strong>Transa\u00e7\u00f5es monitoradas<\/strong><\/p>\n<p align=\"justify\">Durante a an\u00e1lise do tr\u00e1fego, foi poss\u00edvel observar que o LinkingLion est\u00e1 monitorando transa\u00e7\u00f5es Bitcoin. Assim que uma nova transa\u00e7\u00e3o \u00e9 transmitida para um dos n\u00f3s que a entidade est\u00e1 monitorando, \u00e9 aberta uma nova conex\u00e3o de sa\u00edda do LinkingLion para o n\u00f3, e a transa\u00e7\u00e3o \u00e9 baixada. A entidade monitora principalmente transa\u00e7\u00f5es de grandes quantias (dezenas ou centenas de Bitcoins), o que sugere que o objetivo \u00e9 a identifica\u00e7\u00e3o de transa\u00e7\u00f5es de alto valor.<\/p>\n<p>\u00a0<\/p>\n<p align=\"justify\">O comportamento do LinkingLion tamb\u00e9m sugere que ele est\u00e1 tentando correlacionar endere\u00e7os IP com transa\u00e7\u00f5es espec\u00edficas. Quando uma nova transa\u00e7\u00e3o \u00e9 recebida, a entidade a transmite para a maioria dos n\u00f3s aos quais est\u00e1 conectada, para verificar se o n\u00f3 que a transmitiu est\u00e1 na lista de n\u00f3s que a entidade est\u00e1 monitorando. Se a entidade identifica o n\u00f3, ele inicia uma nova conex\u00e3o para o n\u00f3, na tentativa de correlacionar o endere\u00e7o IP com a transa\u00e7\u00e3o recebida.<\/p>\n<p>\u00a0<\/p>\n<p><strong>Conclus\u00e3o<\/strong><\/p>\n<p align=\"justify\">Com base no comportamento observado, \u00e9 poss\u00edvel que o LinkingLion seja uma empresa de an\u00e1lise blockchain coletando dados para melhorar seus produtos. No entanto, as motiva\u00e7\u00f5es exatas da entidade s\u00e3o desconhecidas. O monitoramento de transa\u00e7\u00f5es Bitcoin e a tentativa de correlacion\u00e1-las com endere\u00e7os IP pode ter implica\u00e7\u00f5es na privacidade dos usu\u00e1rios do Bitcoin. Por isso, \u00e9 importante que os usu\u00e1rios estejam cientes desses comportamentos e tomem medidas para proteger sua privacidade e anonimato.<\/p>\n<p align=\"justify\">\u00a0<\/p>\n<p align=\"justify\">Fonte: <a href=\"https:\/\/b10c.me\/observations\/06-linkinglion\/?t\" target=\"_blank\" rel=\"noopener\">https:\/\/b10c.me\/observations\/06-linkinglion\/?t<\/a><\/p>\n<p>\u00a0<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Algumas entidades misteriosas est\u00e3o operando na rede Bitcoin, e uma delas \u00e9 a LinkingLion. Essa entidade \u00e9 capaz de abrir conex\u00f5es com muitos n\u00f3s do Bitcoin usando quatro faixas de endere\u00e7os IP e ouvir as transa\u00e7\u00f5es anunciadas, o que pode permitir que ela associe transa\u00e7\u00f5es rec\u00e9m-transmitidas a endere\u00e7os IP de n\u00f3s. Essa entidade tem estado [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":19798,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[89,100,105],"tags":[],"class_list":["post-19794","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-basico","category-diversos","category-noticias"],"_links":{"self":[{"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/posts\/19794","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/comments?post=19794"}],"version-history":[{"count":4,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/posts\/19794\/revisions"}],"predecessor-version":[{"id":19799,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/posts\/19794\/revisions\/19799"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/media\/19798"}],"wp:attachment":[{"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/media?parent=19794"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/categories?post=19794"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/tags?post=19794"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}