Você está na página 1de 9

White Paper: Coleta de endereos MAC

pela Receita Federal


Vincius da Silveira Serafim*
vinicius@serafim.eti.br
Resumo: no dia 17 de abril de 2015, uma notcia vinculada na
Internet informou que 80 mil contribuintes foram intimados pela
Receita Federal do Brasil por suspeita de terem fraudado
declaraes do IR. Igaro Jung, subsecretrio de Fiscalizao da
Receita Federal, apontou o trabalho do Laboratrio de Lavagem de
Dinheiro da Receita Federal pela potencializao de identificao de
operaes irregulares. Esse laboratrio desenvolve ferramentas para
esse fim e uma das ferramentas utilizadas envolve a coleta de
endereos IP e endereos MAC dos computadores utilizados na
gravao das declaraes. Neste artigo foram analisadas as formas
pelas quais esses dados so obtidos, bem como a utilidade dos
mesmos na identificao de computadores, usurios e contribuintes.
Algumas possibilidades de cruzamento de dados foram apontadas e
algumas consideraes que do margem para uma discusso
jurdica foram tambm realizadas.

1 Introduo
No dia 17 de abril de 2015, em matria publicada pela Agncia Brasil1, cerca de 80 mil
contribuintes foram identificados pela Receita Federal do Brasil como suspeitos de fraudar
declaraes do IR (Imposto de Renda). Ainda conforme a matria, o subsecretrio de Fiscalizao
da Receita Federal, Igaro Jung, apontou esse resultado como sendo devido atuao do
Laboratrio de Lavagem de Dinheiro da Receita. Essa equipe pesquisa e desenvolve ferramentas
para detectar possveis fraudes nas declaraes do IR e, entre as diversas informaes coletadas
por essas ferramentas, duas ganharam destaque na matria citada: endereo IP (Internet
Protocol) e endereo MAC (Medium Access Control).
A inteno da Receita Federal, tambm segundo a matria citada, identificar os
computadores de escritrios de contabilidade responsveis por irregularidades nas declaraes
dos clientes. Partindo deste ponto, realizada uma breve anlise neste artigo sobre a relevncia
da coleta do endereo IP e do endereo MAC, bem como sobre

http://agenciabrasil.ebc.com.br/economia/noticia/2015-04/receita-intima-80-mil-contribuintessuspeitos-de-infracao-em-declaracoes-do
30 de abril de 2015

a forma como essa coleta realizada. Ao final, so levantados alguns aspectos que
merecem uma atenciosa avaliao jurdica.

2 Endereo IP
O endereo IP identifica o "local" na Internet a partir do qual foi enviada uma declarao.
Porm o IP no identifica necessariamente um computador nico na Internet, uma vez que
bastante comum o compartilhamento de um nico endereo entre diversos computadores de uma
mesma rede. Sendo assim, seria possvel identificar a pessoa (fsica ou jurdica) responsvel pelo
uso de um determinado IP em um determinado perodo, mas no o computador especfico
utilizado para a criao da declarao.
Outro ponto relevante a ser considerado que, de acordo com a forma como o acesso
Internet realizado, o endereo IP de uma pessoa pode mudar frequentemente ou pode ser fixo.
O primeiro caso certamente o mais frequente, tornando mais difcil a identificao da pessoa
responsvel pelo uso do endereo IP. Nesse caso, a Receita teria que contar com a cooperao
do provedor de acesso Internet para saber quem usava o endereo em uma determinada janela
de tempo.
Assim como h os endereos IP utilizados na Internet (chamados de IPs vlidos) h tambm
endereos para serem utilizados especificamente em redes internas (IPs invlidos)2. Estes ltimos
podem de fato identificar de forma nica um computador, dentro de uma rede especfica, de forma
anloga ao nmero de uma casa em uma rua especfica de uma cidade. Apenas com um IP
invlido, sem saber qual a rede, a Receita teria o mesmo problema de identificar uma casa
sabendo apenas o nmero da mesma e no conhecendo o nome da rua e mesmo o nome da
cidade.

2.1 Como a coleta feita


Quando dois computadores se comunicam atravs de uma rede necessrio que um saiba
o endereo do outro ou a comunicao simplesmente no seria possvel. Dessa forma, trivial
para um software servidor armazenar em seus registros de acesso os endereos IP dos clientes
que nele conectaram e solicitaram ou enviaram informaes. De fato, diversos softwares
servidores tm esse como um comportamento padro (default).
No caso dos endereos IP vlidos, a coleta fcil de ser feita e pode acontecer at mesmo
sem que a Receita Federal tenha a inteno de realiz-la, torna-se assim perfeitamente possvel
saber a partir de qual endereo IP vlido uma determinada declarao foi enviada.
Em se tratando de endereos IP invlidos, ou de uso exclusivamente interno, a coleta no
se d de forma to automtica pois esses endereos no so visveis na Internet. Nem por isso
2

RFC1918 disponvel em http://www.rfc-editor.org/info/rfc1918

30 de abril de 2015

a coleta seria impossibilitada, podendo ser realizada de forma semelhante utilizada para a coleta
de endereos MAC pela Receita Federal, explicada a seguir.

3 Endereo MAC
Diferentemente de um endereo IP, que pode ser vlido ou invlido na Internet, um endereo
MAC nico no mundo, apesar do mesmo nunca passar de uma rede para outra. Ele nico pois
a sua atribuio controlada por uma organizao, a IEEE-SA (Institute of Electrical and
Electronics Engineers - Standards Association)3. E o fato de nunca passar de uma rede para
outra, faz com que seu uso fique limitado rede local onde se encontra o computador em uso e,
portanto, jamais a Receita Federal receberia essa informao de forma automtica.
O endereo MAC atribudo no ao computador em si, mas sim as suas interfaces de rede
(wireless ou no). Cada interface possui seu prprio e nico endereo MAC, atribudo no
momento de sua fabricao e por essa razo chamado tambm de endereo fsico. Cabe
lembrar aqui que diversos dispositivos como smartphones e tablets so de fato computadores e
possuem tambm suas interfaces de rede, portanto possuem endereos MAC nicos.
Como os endereos so atribudos pela IEEE-SA aos fabricantes de equipamentos,
possvel saber, tambm atravs do endereo MAC, qual a marca do equipamento (ex. Dell,
Apple, Samsung, Intel,)
Um computador pode receber um novo endereo MAC ou perder um endereo MAC a
medida que interfaces de rede so adicionadas ou removidas. Esses procedimentos, embora no
muito frequentes, acontecem com maior facilidade em computadores desktop, sendo mais raros
em notebooks e excepcionais em smartphones e tablets.
Existem formas relativamente fceis (para algum com conhecimento tcnico) de alterar os
endereos MAC de uma interface de rede, mas isso muito raramente necessrio.
Essas caractersticas tornam o endereo MAC mais efetivo do que o endereo IP no que diz
respeito a identificar um computador (ou dispositivo) especfico, inclusive sua marca, embora no
seja a prova de falhas.

3.1 Como a coleta feita


Conforme j explanado, ao contrrio de um IP vlido, o MAC no enviado de forma
automtica para a Receita Federal. Assim, para que a receita obtenha essa informao ela tem
que recorrer a outros meios. Esses meios envolvem acesso direto rede local onde se encontra o
computador a ser identificado ou, melhor ainda, ao prprio computador.

http://standards.ieee.org/develop/regauth/oui/public.html

30 de abril de 2015

Uma vez que, para realizar a declarao do IR, o contribuinte deve realizar o download e a
execuo de um programa desenvolvido pela Receita Federal em um computador, a mesma
obtm o acesso necessrio para coletar ativamente o endereo MAC e mesmo outras
informaes como endereos IP invlidos (ou internos) assim como outros nmeros de srie
nicos existentes no computador.
A partir dessas constataes, foram realizadas anlises dos prprios programas fornecidos
pela Receita Federal para verificar se de fato essa informao era coletada, pois a receita no
informa o usurio sobre isso, e, se coletada, como coletada.

3.1.1 Anlise dos programas


A primeira ao realizada foi abrir um arquivo gerado pelo programa de declarao do
imposto de renda pessoa fsica (IRPF) 2015 (extenso .DEC) e verificar se nele constava o
endereo MAC de alguma interface de rede do computador onde o mesmo foi gerado. Um dos
endereos MAC do computador, no formato 00:00:04:c3:de:124, foi encontrado logo nas primeiras
linhas do arquivo .DEC, porm sem os dois pontos (:) e com todas as letras maisculas, seguido
de 8 zeros: 000004C3DE1200000000.
Uma vez constatado o fato de que a coleta do endereo MAC realizada, passou-se para a
anlise do programa de declarao do IRPF 2015. O programa desenvolvido em linguagem
JAVA e distribudo pela Receita em seu site5. Aps a instalao possvel encontrar o arquivo
principal do programa, cujo nome irpf.jar, em diretrio que varia de acordo com o sistema
operacional utilizado:
Windows: C:\Arquivos de Programas RFB/IRPF2015/irpf.jar
Mac OS X: /Applications/ProgramasRFB/IRPF2015/IRPF2015.app/Contents/Java/irpf.jar
Ubuntu Linux: $HOME/ProgramasRFB/IRPF2015/irpf.jar
O arquivo jar (Java Archive) simplesmente um arquivo compactado contendo as classes
Java, arquivos de imagem, arquivos XML e outros arquivos que so necessrios para o programa.
Esse arquivo pode ser facilmente descompactado e seu contedo inspecionado.
Entre os diversos arquivos contidos no arquivo irpf.jar, existe um cujo nome
mapeamentoTxt.xml. Nas linhas 9 e 10 desse arquivo l-se:
A partir desse arquivo o componente de gravao / restaurao Txt sabe quais registros
o arquivo txt a ser gravado / restaurado vai ter e quais campos cada registro vai ter.

endereo MAC fictcio.

http://www.receita.fazenda.gov.br

30 de abril de 2015

Este arquivo portanto diz respeito ao formato do arquivo .DEC gerado pelo programa. As
diversas linhas seguintes, apontam nomes de campos e descrio dos mesmos. Abaixo so
destacadas as mais relevantes para a anlise.
56 <Campo
...
66 <Campo
67 <Campo
68 <Campo
...
118 <Campo

Nome="NM_NOME"

Descricao="Nome do contribuinte"

[]

Nome="NOME_SO"
Nome="VERSAO_SO"
Nome="VERSAO_JVM"

Descricao="Nome do Sistema Operacional" []


Descricao="Numero da versao do Sistema Operacional(SO)" []
Descricao="Numero da versao do Java"
[]

Nome="ENDERECO_MAC" Descricao="Endereo fsico da estao []

A linha 56 serve apenas como um exemplo de uma informao que se espera que esteja na
declarao: o nome do contribuinte. J as linhas 66, 67 e 68 apontam para o fato de que so
enviados tambm, como parte da declarao, o nome e verso do sistema operacional bem como
a verso da plataforma Java instalada. E, por fim, na linha 118 est a indicao do
armazenamento do endereo MAC do computador no qual o declarao foi gravada.
Para descobrir como o endereo MAC est sendo coletado, foi realizada a descompilao6
das classes java do programa de declarao do IRPF 2015 (contidas no arquivo irpf.jar) e foram
procuradas algumas palavras-chave que poderiam estar relacionadas obteno do endereo
MAC, como: network, interface e address.
Foram encontradas duas funes relevantes, denominadas neste artigo de fa() e fb().
Ambas listadas integralmente nos anexos 1 e 2, respectivamente. A funo fb() utilizada pela
funo fa() e tem por objetivo determinar qual o endereo IP do computador que est
efetivamente sendo utilizado para o acesso Internet. A forma como isso feito curiosa. Essa
funo contm uma lista de endereos de sites:
String[]
arrayOfString=
{www.receita.fazenda.gov.br",
"www.google.com.br",
"www.uol.com.br", "www.globo.com", "www.terra.com.br", "www.estadao.com.br" };

Como pode ser notado, alm do site da prpria Receita, os sites do Google, UOL, Globo,
Terra e do Estado fazem parte desta lista. O que a funo fb() faz tentar se conectar em cada
um desses sites na ordem em que eles aparecem na listagem e, em cada tentativa, verificar qual
o endereo IP do computador (IP local) utilizado para a conexo. Assim que o endereo obtido,
as tentativas de conexo cessam e a funo fb() retorna o resultado para a funo fa().
O endereo IP identificado pela fb() ser, em geral, um endereo invlido, ou seja, utilizado
apenas em redes internas. Essa informao utilizada pela funo fa() e ento descartada, no
sendo adicionada declarao.
J a funo fa() a que efetivamente obtm o endereo MAC. Inicialmente ela chama a fb()
para obter o endereo IP da interface de rede conectada Internet. Em seguida, se a fb() retornou

Atravs desse processo possvel obter acesso ao cdigo fonte de um programa.

30 de abril de 2015

um endereo IP, a fa() tenta obter o endereo MAC da interface de rede que possui o endereo IP
encontrado. Caso contrrio, a fa() obtm o endereo MAC da primeira interface de rede que ela
encontrar no sistema.
As duas funes so bem simples e fceis de serem compreendidas por algum com
conhecimento em programao de computadores.
Alm do programa IRPF2015, foram tambm analisados: IRPF2014, IRPF2013, IRPF2012,
IRPF2011, IRPF2010 e IRPF2009. Foi verificado que desde 2010 os programas de declarao do
IRPF apresentavam as mesmas caractersticas de captura de endereos MAC encontradas no
IRPF2015.

4 Utilidade dos endereos IP e MAC para a Receita


A Receita Federal pode facilmente obter o endereo IP vlido de quem enviou uma
determinada declarao. Porm, conforme foi descrito na seo 2, a utilidade dessa informao
relativa pois, por exemplo, um determinado endereo IP pode em um momento estar sendo
utilizado por uma pessoa e no momento seguinte por uma outra diferente. Seria ento necessria
a cooperao dos provedores de acesso Internet para que a Receita pudesse saber quais
endereos foram utilizados por quais pessoas e em quais perodos.
J o endereo MAC fixo e, a no ser que o usurio tenha algum conhecimento tcnico
mais profundo, raramente ser mudado. Esse endereo no permite que a Receita saiba onde se
encontra o computador na Internet, mas identifica de forma nica este computador. Qual ento a
utilidade do endereo MAC?
Uma vez que a Receita identifique uma fraude em uma declarao do IR, ela pode procurar
outras declaraes que contenham o mesmo endereo MAC, ou seja, que foram feitas em um
mesmo computador e, provavelmente, por uma mesma pessoa. A partir da a Receita pode
verificar mais cuidadosamente essas outras declaraes encontradas.
Ainda, a partir dos dados dos contribuintes a Receita pode obter a localizao fsica (estado,
cidade, rua nmero,), mais ou menos precisa, dos endereos MAC. E ento, pode at mesmo
determinar quais (quantos) computadores esto em uma mesma residncia, sala comercial,
prdio, cidade ou estado. Alm de ser possvel outras dedues relacionadas s marcas dos
equipamentos.

5 Concluso
O endereo MAC pode revelar muito mais informaes do que o endereo IP. Com ele
possvel identificar de forma nica, em termos mundiais, um computador ou outro equipamento
qualquer que possua uma interface de rede. Essa informao no uma informao fiscal e vem
sendo capturada desde 2010 pela Receita Federal sem o consentimento e cincia do dono do
30 de abril de 2015

equipamento e do contribuinte. Vale destacar que ambos no so necessariamente a mesma


pessoa. No h nenhuma meno coleta dessa informao seja no programa, poltica de
privacidade ou qualquer outro documento disponibilizado pela Receita em seu site.
Assim como os endereos MAC so capturados, outras informaes tambm poderiam ser
facilmente capturadas e enviadas Receita Federal como, por exemplo: listagem de arquivos de
declarao (.DEC) existentes no disco do computador, nome de programas em execuo, nome
do usurio no sistema operacional, dados de licena do sistema operacional, etc.
Certamente h espao aqui para um estudo tcnico-jurdico, principalmente no que diz
respeito ao anteprojeto da lei para proteo de dados pessoais. No s no que diz respeito ao
caso especfico analisado mas diversas outras iniciativas, principalmente privadas, que tambm
fazem uso de dados coletados sem o devido consentimento dos usurios.

(*) Vincius da Silveira Serafim graduado em Cincia da Computao


pela Universidade de Passo Fundo (1999) e Mestre em Cincia da
Computao pela Universidade Federal do Rio Grande do Sul (2002).
Trabalha como consultor em segurana da informao desde 2001 e
atua como professor de cursos de extenso, graduao e psgraduao desde 1999.

30 de abril de 2015

Anexo 1 - Funo fa()


public static String fa()
{
String str = "";
Object localObject = fb();
try
{
if ((localObject != null) && ((localObject =
NetworkInterface.getByInetAddress((InetAddress)localObject)) != null) && ((localObject =
((NetworkInterface)localObject).getHardwareAddress()) != null) && (localObject.length ==
6)) {
str = String.format("%1$02x%2$02x%3$02x%4$02x%5$02x%6$02x", new Object[]
{ Byte.valueOf(localObject[0]), Byte.valueOf(localObject[1]),
Byte.valueOf(localObject[2]), Byte.valueOf(localObject[3]), Byte.valueOf(localObject[4]),
Byte.valueOf(localObject[5]) }).toUpperCase();
}
if (str.isEmpty())
{
Enumeration localEnumeration = NetworkInterface.getNetworkInterfaces();
while (localEnumeration.hasMoreElements()) {
if (((localObject = (NetworkInterface)localEnumeration.nextElement()) != null)
&& ((localObject = ((NetworkInterface)localObject).getHardwareAddress()) != null) &&
(localObject.length == 6))
{
str = String.format("%1$02x%2$02x%3$02x%4$02x%5$02x%6$02x", new Object[]
{ Byte.valueOf(localObject[0]), Byte.valueOf(localObject[1]),
Byte.valueOf(localObject[2]), Byte.valueOf(localObject[3]), Byte.valueOf(localObject[4]),
Byte.valueOf(localObject[5]) }).toUpperCase();
break;
}
}
}
}
catch (SocketException localSocketException)
{
(localObject = localSocketException).printStackTrace(System.err);
}
return str;
}

30 de abril de 2015

Anexo 2 - Funo fb()


private static InetAddress fb()
{
String[] arrayOfString = { "www.receita.fazenda.gov.br", "www.google.com.br",
"www.uol.com.br", "www.globo.com", "www.terra.com.br", "www.estadao.com.br" };
int i = 0;
int j = 0;
InetAddress localInetAddress2 = null;
while ((i == 0) && (j < 6)) {
try
{
InetAddress localInetAddress1 = InetAddress.getByName(arrayOfString[(j++)]);
Object localObject1;
int k = (localObject1 = new ServerSocket(0)).getLocalPort();
((ServerSocket)localObject1).close();
k = k;
(localObject1 = new DatagramSocket(k)).connect(localInetAddress1, k);
localInetAddress2 = ((DatagramSocket)localObject1).getLocalAddress();
i = 1;
}
catch (UnknownHostException localUnknownHostException)
{
(localObject2 = localUnknownHostException).printStackTrace(System.err);
}
catch (SocketException localSocketException)
{
(localObject2 = localSocketException).printStackTrace(System.err);
}
catch (IOException localIOException)
{
Object localObject2;
(localObject2 = localIOException).printStackTrace(System.err);
}
}
return localInetAddress2;
}

30 de abril de 2015