SlideShare ist ein Scribd-Unternehmen logo
1 von 82
Downloaden Sie, um offline zu lesen
V iv en d o  
d e 
H a ck in g
Quem Sou ?
●

Antonio Costa, Cooler_

●

Desenvolvedor

●

●

●

●

Fundador e colaborador da e-zine
cogumelo binário “cogubin.leet.la”
Membro do BugSec Team
“bugsec.googlecode.com ”
Como hobby estudo eletrônica.
Trabalho na CONVISO como
Desenvolvedor e pesquisador em
segurança
Alguns projetos,artigos...
●

Github CoolerVoid

●

Bibliotecas em C

●

Programas para automação em testes

●

Google code bugsec

●

...

●

Coolerlab.wordpress.com

●

Blog.conviso.com.br
Por que ?
●
NOT !!!
●
●
Hackers , TRUE
●
Hackers
●

Aleph One ,taviso...
WhiteHat
●
BlackHat
●
●
Status
●
Problem
●
Capital
●
Conferências nacionais
H2HC
● YSTS
● Bsides
● Bhack
● Governo
● Software Livre
●
Hackerspaces
Garoa Hacker (SP)
● Kernel 40 (RJ)
● Tarrafa (floripa)
● SJC(são josé dos
campos)
● ...
●
E-zines
The bug magazine
● Barata Elétrica
● Cogumelo Binário
● Phrack
● outras zines...
●
IRC
Underground
● Ajuda
● Social
●

●

irc.freenode.net
Underground ?
●
Tools
●

...
Capital
●
Ways to follow
Pentest
● Development
● Code review
● Research
● System Administration
● Forense
...
●
Vivendo de hacking
Vulnerabilidades
●

Bug o que é ?

●

vulnerabilidade o que é ?

●

A cultura

●

Exposição (disclosure)

●

Como procurar uma vulnerabilidade

●

Vulnerabilidade na prática
O que é um Bug ?
●

●

Bug(inseto ou defeito) é um termo
computacional para definir um acontecimento
inesperado de um determinado software.
Diz a lenda que esse termo foi criado por
Thomas Edison quando um inseto causou
problemas de leitura em seu fonógrafo em
1878. Outros dizem que o termo surgiu,
porque as válvulas de antigos computadores
atraiam insetos, logo causavam curto circuito
fazendo queimar...
O que é um Bug ?
●

●

Primeiro vetor dos problemas
Falta de experiência ; conhecido pelos
programadores "old school" como "pitfall"
,Quando falamos em “Pitfall“, falamos de uma
analogia a armadilhas da programação ou
seja buracos , que quando se cai fica ruim de
subir sem ajuda de alguém , onde um
programador iniciante pode errar e não
conseguir ver onde está o erro.
O que é um Bug ?
●

problemas com sinais

●

*isso “!=” é diferente disso ‘=!’

●

“!=” sinal de diferente para fazer comparação
“if(x!=y)”

●

“=!” você seta uma var para NOT,if(x=(!y))

●

Erros de sintaxe em geral...
O que é um Bug ?
●

Segundo vetor dos problemas

●

erro de má prática

●

Erro por não seguir padrões da linguagem,não
seguir padrão de uma biblioteca,não higienizar
variáveis onde se tem INPUT bem como validar,
problemas de memory leaks ao usar "new" não
usar "delete", ao usar "malloc()" não usa
"free()",permissões erradas em arquivos
temporários podendo ser explorado um race
condition, variáveis com problemas de
reentrância em algo concorrente...
O que é um Bug ?
●

●

Exemplo
O que é um Bug ?
●

O que o correu se chama Buffer Overflow,é o
transbordamento da memória que ocorre quando
armazenamos mais dados do que se pode suportar
em um buffer,no caso "string_3" suporta apenas
"8" char e colocamos "9",teve um comportamento
inesperado, a partir do overflow dependendo do
caso pode-se executar um código reverso
manipular endereços etc...
O que é Vulnerabilidade ?
●

Vulnerabilidade é um Bug que pode afetar a
segurança do sistema. Exemplo:
O que é Vulnerabilidade ?
●
Por que falamos
de Linguagem C ?
●
Por que falamos
de Linguagem C ?
●
Por que falamos
de linguagem C ?
●

●

●

LibC é usada em vários sistemas operacionais
como
MacOS,Solaris,Linux(android,debian,redhat...),
FreeBSD,AIX,HP-UX etc. usada no core utils bem
como comandos como “ls,rm,mv,mkdir...” todos
feitos em C, labels para syscall da “unistd.h” para
o código com inline Assembly. Um simples
arquivo aberto em uma linguagem como Java já
passa pela libC para usar um syscall de “open()”.
Kernel é feito em C com muitos inline
Assembly,drivers também etc...
OpenMPI que usamos em “msg passing” em
clusters é em linguagem C . . .
A Cultura
●

●

Vulnerabilidade em geral tem um estereótipo
para cada tipo, a dogma se dá graças a fatos
empíricos anteriores de pesquisadores,
desenvolvedores, pentesters, hackers em geral...
Assim fazendo divulgação(disclosure) do
problema, cada um com sua perspectiva
independente de cada tribo.
Exposição (disclosure)
●

●

Para tal temos "CVE"(Common Vulnerabilities
and Exposures) um padrão para exposição de
falhas comuns em sistemas, mantido pela Mitre
"cve.mitre.org",tem suas próprias paradigmas
para exposição e sua própria ética, profissionais
de segurança do mundo todo as usam para expor
falhas...
também temos a OSVDB"The Open Source
Vulnerability Database" que se encontra em
"osvdb.org", provê dos mesmos fins do CVE porém
com algumas diferenças.
Exposição (disclosure)
●

●

Temos diversos outros locais como "exploit-db"
extremamente popular vide "exploit-db.com"
,mantido pelo pessoal do "offensive security"
criadores de uma distribuição linux para pentest
chamada back|track , pelo exploit-db podemos ver
vulnerabilidades recentes CVE,OSVDB...
tem a "bugtraq" lista da security focus
"securityfocus.com" que dispõe de uma boa lista
de discusão, entre outras listas...
Exposição (disclosure)
●
Exposição (disclosure)
●

Claro que alguns não seguem regras nem
padrões,fazendo ai exposição indevida de certas
informações, tem muito mercado negro
funcionando 24h em servidores do IRC, chats
privados com SSL para vendas de falhas
chamadas de "0day", das quais tem alto valor no
mercado, sua validade varia entre 1 a uma
eternidade, claro que pesa questões de
aleatoriedade também.
Como procurar uma
vulnerabilidade ?
●

Tem muitas formas de se abstrair informações
para conseguir tal informação, podemos fazer
manualmente como também desenvolver
softwares de forma otimizar esta busca ou usar
um já existente como
Nessus,OpenVas,Armitage,Nikto...
Repare que o contexto aqui é "procurar" uma
vulnerabilidade e não "descobrir", partindo desse
ponto,sabemos que olhando o CVE,Bugtraq...
vemos que todo software tem uma versão ,
quando é feita exposição de uma falha é colocado
sobre a mesa todas as versões vulneráveis daquele
software, os desenvolvedores lançam um "patch"
para deixar a aplicação estável.
Como procurar uma
vulnerabilidade ?
●

●

Então a partir dai você já tem uma utopia do que
deve ser feito, digamos ai ter uma database
composta por campos como "nome da
falha","string de busca" e "CVE"... "string de
busca" seria para procurar por um determinado
"banner" que comprove existência do mesmo por
exemplo "ProFTPd 1.3*".
exemplo usando protocolo TCP/IP veja como o
netcat pega banner de um serviço.
Como procurar uma
vulnerabilidade ?
●

●

Bom já sabemos versão do serviço "Sendmail",
com isso podemos procurar em algum repositório
de falhas a versão "8.14.5", evidente que essa
versão pode ser um honeypot(pote de
mel),levando o ponto que é fácil mudar o
"banner" de algum software ainda mais se for
OpenSource.
Agora o que interessa, o código do netcat é meio
que grande para explicar o funcionamento, tem
validações getopt, entretanto desenvolvi algo
simples para tentar ilustrar algo com Sockets,
somente nesse ponto de mostrar banner de
serviço.
Como procurar uma
vulnerabilidade ?
Como procurar uma
vulnerabilidade ?
●

●

A partir disso poderá fazer seu próprio scanner de
banners, para chegar ao nível do Nmap esta bem
longe, teria que usar raw sockets para chegar
num nível stealth e usar spoofing entre outras
coisas... última dica o paper "The Art of Port
Scanning" do Fyodor.
Claro que tem alguns protocolos como o HTTP
que além de poder ver a versão do
servidor,podemos testar inputs na URL para
tentar um possível DoS rumo a um "crash"
,podemos explorar falhas nos sistemas web
hospedados, bem como procurar padrões para
SQL injection,XSS,Local file injection,remote file
injection , disclosure...
Vulnerabilidade na Prática
●

Nestes tempos 60% das falhas expostas são WEB
ou seja estão dentro do protocolo HTTP, por este
número vamos focar agora em web pelo menos
nesta parte de descobrimento, sem falar que é
bem mais fácil descobrir falhas em aplicações
web, pois proteções como ASLR,PAX não afetam
aplicações no protocolo HTTP, claro que um
WAF(web application firewall) pode atrapalhar
mas nada no ramo de software é 100%
certo,mesmo com um bom Sniffer dando parser
com uma regex"expressão regular" genial,pode
ter alguém para burlar.
SQL injection

●

●

SQL injection “injeção de SQL” ocorre quando o
atacante consegue inserir uma série de instruções
SQL dentro de uma “query” , através da
manipulação da entrada de dados de uma
aplicação.
Isso pode ocorrer tanto via
ARGV”argumento”,como em um form em uma
GUI,via HTTP com POST,GET,COOKIE via OCR,
Basta ter input !
SQL injection

●

Não gosto de teoria adoro a prática , então
desenvolvi dois códigos vulneráveis a SQL
injection, um em Linguagem C com LibCGI, e
outro em PHP.

●

Sim é um wargame bem simples

●

http://bugsec.googlecode.com/files/Coolers_sqli_game.zip

●

https://github.com/CoolerVoid/neilmonkey
SQL injection
●

Antes de ir para a prática com SQL injection ,
vamos entender o funcionamento comum de um
sistema Web que usa banco de dados.
SQL injection
●

Vamos ver o front do nosso sistema vulnerável
●
SQL injection
●

Tentamos testar com uso de ' para ver log de erro

●

Veja esta vulnerável a SQL injection

●

Sabendo disso podemos fazer algo sério exemplo:
'; DROP TABLE neiluser;-imagine impacto disso em um sistema com
muitos usuários...
SQL injection
●

Uma dica em ataques de SQL injection , usar o
sqlmap , uma ferramenta feita em python com um
banco de querys para fazer Fuzzer em
formulários, ao resultar algo o programa deixa a
mostra, interessante que ao testar o programa ele
tomou controle e deu dump muito além do banco
de dados usado, poderia facilitar ai para
implantar um backdoor então depois subir
privilégios com um exploit local então...
SQL injection
●

Testando o sqlmap
SQL injection
●

●

●

Questão de 3 minutos o sqlmap deu dump de todo
banco de dados e de todas as tabelas.”isso não só
a neiluser” , dominou o sistema todo, agora só
quebrar algumas hash com john e logar.
Devastador o ataque foi um sucesso !
No caso de blackbox usar o argumento -tor ou
-proxy do sqlmap pode garantir um anonimato
Descobrindo uma vulnerabilidade
E agora ? Casa caiu !
●

SysAdmin

●

DBA

●

WebMaster

backup ?
Snort ?
Polícia ?
GAME OVER !
OCR
Code Bar
Vivendo de hacking
XSS “Cross-site scripting”
●

●

●

●

●

Consiste em uma vulnerabilidade Web, onde o
atacante por meio de uma entrada sem filtro
manda seu javascript malicioso.
Campos de texto de formulários em um POST ou
GET
Embora seja um ataque muito ignorado , é usado
para roubar cookies, o que pode ser devastador.
Logar na conta do usuário ,pelo fato do usuário
abrir uma URL vulnerável a XSS, por meio de
roubo de cookies.
Outros ataques...
XSS “Cross-site scripting”
●

●

Exemplo
XSS “Cross-site scripting”
●
XSS “Cross-site scripting”
●
RFI “Remote File Inclusion”
●

Um tipo de vulnerabilidade onde o atacante inclui
um arquivo remoto,através de entradas do
sistema alvo.
Vivendo de hacking
Vivendo de hacking
LFI “Local File Inclusion”
●

●

Um tipo de vulnerabilidade onde o atacante inclui
um arquivo Local,através de entradas do sistema
alvo.

Mesma ideia de RFI porém algo local
exemplo:

●

http://alvo.com/index.php?file=../../../../etc/passwd
LFI “Local File Inclusion”
Burlando filtro de um web
application firewall
●

Ao encontrar um sistema vulnerável , algumas
vezes nos deparamos com algum erro inesperado,
se esta vulnerável por que não consegue
explorar ?

●

HoneyPot

●

Um WAF “web application firewall”

●

São problemas a se pensar , como nem tudo na
vida é 100% seguro . . .
Burlando filtro de um web
application firewall
●

●
●

Filtros em aplicações web ,são feitos da leitura do
protocolo HTTP, bem como passar por várias
expressões regulares para achar certos padrões
baseados em uma “black list”, para assim poder
bloquear acesso e logar o ataque.
Então podemos tentar entender certos filtros
Codificar(encode) dados do
POST,GET,COOKIE para estar enganando
filtros...
●

.
Vivendo de hacking
Fuzzer
●

●

●

●

●

http://bluered.sourceforge.net/
Ferramenta para pegar todas URLs de um host,
então testar INPUTs baseadas de uma lista.
Testa um por um, o que retornar algo
interessante rotula como vulnerável.
Ferramenta feita em Perl pelo meu amigo “Victor
Ramos Mello” o “m0nad”, do grupo de pesquisa
que faço parte BugSec.
Bom de um Fuzzer que a partir de testes brutos
ele descobre falhas novas, que scanners como
nikto não iriam conseguir já que são baseados
em falhas já existentes.
Fuzzer
●

●

●

●

●

http://bluered.sourceforge.net/
Ferramenta para pegar todas URLs de um host,
então testar INPUTs baseadas de uma lista.
Testa um por um, o que retornar algo
interessante rotula como vulnerável.
Ferramenta feita pelo meu amigo “Victor Ramos”
o “m0nad”, do grupo que faço parte BugSec
Bom de um Fuzzer que a partir de testes brutos
ele descobre falhas novas, que scanners como
nikto que não são inteligentes não conseguiriam.
Backdoor,web Shells...
●

●

●

●

●

Tanto no underground, como no meio de
segurança em geral é tradição falar de Backdoors.
Já esta fora de moda Backdoors simples com
netcat ou em Web como shells r57,c99 etc...
Mesmo por que uma varredura com Nmap já irá
revelar a porta, ou no caso de HTTP algum
aplicativo poderá apontar o local do mesmo
bloquear...
Sniffer com analisador de CMDs poderá dificultar
etc...
Usar Raw sockets ? Genial assim nem o Nmap
acharia a porta , mas para usar Raw precisaria ser
Root...
Backdoor,web Shells...
●

●

https://github.com/CoolerVoid/Cakeman
Uma das muitas soluções , um backdoor
utilizando COOKIE, claro que um WAF poderá
detectar ,mas se codificar “encode” pode dar mais
trabalho achar, fora que o serviço vai usar o
protocolo HTTP, diminui as suspeitas.
Backdoor,web Shells...
Backdoor,web Shells...
Backdoor,web Shells...
Dúvidas ?
●
●

Muito Obrigado !
.
Amigos do Bugsec :
Tiago Natel,Victor Ramos,
Felipe Pena,
Bellani, Sergio Renan.

Weitere ähnliche Inhalte

Was ist angesagt?

Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot frameworkClaudenir Freitas
 
Slide curso metasploit
Slide curso metasploitSlide curso metasploit
Slide curso metasploitRoberto Soares
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyRelsi Maron
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"Roberto Soares
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoPaula Grangeiro
 
Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurançaMichael Douglas
 
Novidades PHP 7.4 e 8.0!
Novidades PHP 7.4 e 8.0!Novidades PHP 7.4 e 8.0!
Novidades PHP 7.4 e 8.0!Marcos Marcolin
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservicesClaudenir Freitas
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonPaula Grangeiro
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de softwarericardophp
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e DjangoOsvaldo Santana Neto
 
BDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasBDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasVitor Mattos
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017Vitor Mattos
 
Palestra: Pentest - Intrusão de Redes
Palestra: Pentest - Intrusão de RedesPalestra: Pentest - Intrusão de Redes
Palestra: Pentest - Intrusão de RedesBruno Alexandre
 

Was ist angesagt? (20)

Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot framework
 
Slide curso metasploit
Slide curso metasploitSlide curso metasploit
Slide curso metasploit
 
Metasploit Framework: Software Livre para PoC de Vulnerabilidades
Metasploit Framework: Software Livre para PoC de VulnerabilidadesMetasploit Framework: Software Livre para PoC de Vulnerabilidades
Metasploit Framework: Software Livre para PoC de Vulnerabilidades
 
Pentest Auto-Ensinado
Pentest Auto-EnsinadoPentest Auto-Ensinado
Pentest Auto-Ensinado
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de código
 
Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurança
 
Novidades PHP 7.4 e 8.0!
Novidades PHP 7.4 e 8.0!Novidades PHP 7.4 e 8.0!
Novidades PHP 7.4 e 8.0!
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservices
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
 
Apostila metasploit
Apostila metasploitApostila metasploit
Apostila metasploit
 
BDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasBDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemas
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017
 
Palestra: Pentest - Intrusão de Redes
Palestra: Pentest - Intrusão de RedesPalestra: Pentest - Intrusão de Redes
Palestra: Pentest - Intrusão de Redes
 

Ähnlich wie Vivendo de hacking

OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)Ricardo Rufino
 
ArduinoDay 2015 - OpenDevice
ArduinoDay 2015 -  OpenDeviceArduinoDay 2015 -  OpenDevice
ArduinoDay 2015 - OpenDeviceRicardo Rufino
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosRichard Barros
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoEmbarcados
 
Teste cabra da peste
Teste cabra da pesteTeste cabra da peste
Teste cabra da pesteMichele Silva
 
Introdução ao teste de intrusão em redes
Introdução ao teste de intrusão em redesIntrodução ao teste de intrusão em redes
Introdução ao teste de intrusão em redesAlisson Fuckner
 
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...Thiago Dieb
 
Invasão e correção em sites
Invasão e correção em sitesInvasão e correção em sites
Invasão e correção em sitesDaskonet Dasko
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
Apostila de programacao java
Apostila de programacao javaApostila de programacao java
Apostila de programacao javaCleber Costa
 
Tutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jqueryTutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jqueryLuan Campos
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...tdc-globalcode
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04Carlos Santos
 

Ähnlich wie Vivendo de hacking (20)

OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)
 
ArduinoDay 2015 - OpenDevice
ArduinoDay 2015 -  OpenDeviceArduinoDay 2015 -  OpenDevice
ArduinoDay 2015 - OpenDevice
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
ptt
pttptt
ptt
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard Barros
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcado
 
Teste cabra da peste
Teste cabra da pesteTeste cabra da peste
Teste cabra da peste
 
detector de ladrão com laser
detector de ladrão com laserdetector de ladrão com laser
detector de ladrão com laser
 
Manual
ManualManual
Manual
 
Introdução ao teste de intrusão em redes
Introdução ao teste de intrusão em redesIntrodução ao teste de intrusão em redes
Introdução ao teste de intrusão em redes
 
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
 
Aula2
Aula2Aula2
Aula2
 
Invasão e correção em sites
Invasão e correção em sitesInvasão e correção em sites
Invasão e correção em sites
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Apostila de programacao java
Apostila de programacao javaApostila de programacao java
Apostila de programacao java
 
Invasao_e_Correcao_em_Sites.pdf
Invasao_e_Correcao_em_Sites.pdfInvasao_e_Correcao_em_Sites.pdf
Invasao_e_Correcao_em_Sites.pdf
 
Tutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jqueryTutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jquery
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
 

Mehr von Antonio Costa aka Cooler_ (11)

Strange security mitigations
Strange security mitigationsStrange security mitigations
Strange security mitigations
 
Understand study
Understand studyUnderstand study
Understand study
 
WAF protections and bypass resources
WAF protections and bypass resourcesWAF protections and bypass resources
WAF protections and bypass resources
 
Static analysis for beginners
Static analysis for beginnersStatic analysis for beginners
Static analysis for beginners
 
Improving spam detection with automaton
Improving spam detection with automatonImproving spam detection with automaton
Improving spam detection with automaton
 
Raptor web application firewall
Raptor web application firewallRaptor web application firewall
Raptor web application firewall
 
0d1n
0d1n0d1n
0d1n
 
Development pitfalls
Development pitfallsDevelopment pitfalls
Development pitfalls
 
0d1n bsides2
0d1n bsides20d1n bsides2
0d1n bsides2
 
Bsides odin
Bsides odinBsides odin
Bsides odin
 
Bsides4cooler
Bsides4coolerBsides4cooler
Bsides4cooler
 

Vivendo de hacking

  • 1. V iv en d o   d e  H a ck in g
  • 2. Quem Sou ? ● Antonio Costa, Cooler_ ● Desenvolvedor ● ● ● ● Fundador e colaborador da e-zine cogumelo binário “cogubin.leet.la” Membro do BugSec Team “bugsec.googlecode.com ” Como hobby estudo eletrônica. Trabalho na CONVISO como Desenvolvedor e pesquisador em segurança
  • 3. Alguns projetos,artigos... ● Github CoolerVoid ● Bibliotecas em C ● Programas para automação em testes ● Google code bugsec ● ... ● Coolerlab.wordpress.com ● Blog.conviso.com.br
  • 6.
  • 11.
  • 15. Conferências nacionais H2HC ● YSTS ● Bsides ● Bhack ● Governo ● Software Livre ●
  • 16. Hackerspaces Garoa Hacker (SP) ● Kernel 40 (RJ) ● Tarrafa (floripa) ● SJC(são josé dos campos) ● ... ●
  • 17. E-zines The bug magazine ● Barata Elétrica ● Cogumelo Binário ● Phrack ● outras zines... ●
  • 22. Ways to follow Pentest ● Development ● Code review ● Research ● System Administration ● Forense ... ●
  • 24. Vulnerabilidades ● Bug o que é ? ● vulnerabilidade o que é ? ● A cultura ● Exposição (disclosure) ● Como procurar uma vulnerabilidade ● Vulnerabilidade na prática
  • 25. O que é um Bug ? ● ● Bug(inseto ou defeito) é um termo computacional para definir um acontecimento inesperado de um determinado software. Diz a lenda que esse termo foi criado por Thomas Edison quando um inseto causou problemas de leitura em seu fonógrafo em 1878. Outros dizem que o termo surgiu, porque as válvulas de antigos computadores atraiam insetos, logo causavam curto circuito fazendo queimar...
  • 26. O que é um Bug ? ● ● Primeiro vetor dos problemas Falta de experiência ; conhecido pelos programadores "old school" como "pitfall" ,Quando falamos em “Pitfall“, falamos de uma analogia a armadilhas da programação ou seja buracos , que quando se cai fica ruim de subir sem ajuda de alguém , onde um programador iniciante pode errar e não conseguir ver onde está o erro.
  • 27. O que é um Bug ? ● problemas com sinais ● *isso “!=” é diferente disso ‘=!’ ● “!=” sinal de diferente para fazer comparação “if(x!=y)” ● “=!” você seta uma var para NOT,if(x=(!y)) ● Erros de sintaxe em geral...
  • 28. O que é um Bug ? ● Segundo vetor dos problemas ● erro de má prática ● Erro por não seguir padrões da linguagem,não seguir padrão de uma biblioteca,não higienizar variáveis onde se tem INPUT bem como validar, problemas de memory leaks ao usar "new" não usar "delete", ao usar "malloc()" não usa "free()",permissões erradas em arquivos temporários podendo ser explorado um race condition, variáveis com problemas de reentrância em algo concorrente...
  • 29. O que é um Bug ? ● ● Exemplo
  • 30. O que é um Bug ? ● O que o correu se chama Buffer Overflow,é o transbordamento da memória que ocorre quando armazenamos mais dados do que se pode suportar em um buffer,no caso "string_3" suporta apenas "8" char e colocamos "9",teve um comportamento inesperado, a partir do overflow dependendo do caso pode-se executar um código reverso manipular endereços etc...
  • 31. O que é Vulnerabilidade ? ● Vulnerabilidade é um Bug que pode afetar a segurança do sistema. Exemplo:
  • 32. O que é Vulnerabilidade ? ●
  • 33. Por que falamos de Linguagem C ? ●
  • 34. Por que falamos de Linguagem C ? ●
  • 35. Por que falamos de linguagem C ? ● ● ● LibC é usada em vários sistemas operacionais como MacOS,Solaris,Linux(android,debian,redhat...), FreeBSD,AIX,HP-UX etc. usada no core utils bem como comandos como “ls,rm,mv,mkdir...” todos feitos em C, labels para syscall da “unistd.h” para o código com inline Assembly. Um simples arquivo aberto em uma linguagem como Java já passa pela libC para usar um syscall de “open()”. Kernel é feito em C com muitos inline Assembly,drivers também etc... OpenMPI que usamos em “msg passing” em clusters é em linguagem C . . .
  • 36. A Cultura ● ● Vulnerabilidade em geral tem um estereótipo para cada tipo, a dogma se dá graças a fatos empíricos anteriores de pesquisadores, desenvolvedores, pentesters, hackers em geral... Assim fazendo divulgação(disclosure) do problema, cada um com sua perspectiva independente de cada tribo.
  • 37. Exposição (disclosure) ● ● Para tal temos "CVE"(Common Vulnerabilities and Exposures) um padrão para exposição de falhas comuns em sistemas, mantido pela Mitre "cve.mitre.org",tem suas próprias paradigmas para exposição e sua própria ética, profissionais de segurança do mundo todo as usam para expor falhas... também temos a OSVDB"The Open Source Vulnerability Database" que se encontra em "osvdb.org", provê dos mesmos fins do CVE porém com algumas diferenças.
  • 38. Exposição (disclosure) ● ● Temos diversos outros locais como "exploit-db" extremamente popular vide "exploit-db.com" ,mantido pelo pessoal do "offensive security" criadores de uma distribuição linux para pentest chamada back|track , pelo exploit-db podemos ver vulnerabilidades recentes CVE,OSVDB... tem a "bugtraq" lista da security focus "securityfocus.com" que dispõe de uma boa lista de discusão, entre outras listas...
  • 40. Exposição (disclosure) ● Claro que alguns não seguem regras nem padrões,fazendo ai exposição indevida de certas informações, tem muito mercado negro funcionando 24h em servidores do IRC, chats privados com SSL para vendas de falhas chamadas de "0day", das quais tem alto valor no mercado, sua validade varia entre 1 a uma eternidade, claro que pesa questões de aleatoriedade também.
  • 41. Como procurar uma vulnerabilidade ? ● Tem muitas formas de se abstrair informações para conseguir tal informação, podemos fazer manualmente como também desenvolver softwares de forma otimizar esta busca ou usar um já existente como Nessus,OpenVas,Armitage,Nikto... Repare que o contexto aqui é "procurar" uma vulnerabilidade e não "descobrir", partindo desse ponto,sabemos que olhando o CVE,Bugtraq... vemos que todo software tem uma versão , quando é feita exposição de uma falha é colocado sobre a mesa todas as versões vulneráveis daquele software, os desenvolvedores lançam um "patch" para deixar a aplicação estável.
  • 42. Como procurar uma vulnerabilidade ? ● ● Então a partir dai você já tem uma utopia do que deve ser feito, digamos ai ter uma database composta por campos como "nome da falha","string de busca" e "CVE"... "string de busca" seria para procurar por um determinado "banner" que comprove existência do mesmo por exemplo "ProFTPd 1.3*". exemplo usando protocolo TCP/IP veja como o netcat pega banner de um serviço.
  • 43. Como procurar uma vulnerabilidade ? ● ● Bom já sabemos versão do serviço "Sendmail", com isso podemos procurar em algum repositório de falhas a versão "8.14.5", evidente que essa versão pode ser um honeypot(pote de mel),levando o ponto que é fácil mudar o "banner" de algum software ainda mais se for OpenSource. Agora o que interessa, o código do netcat é meio que grande para explicar o funcionamento, tem validações getopt, entretanto desenvolvi algo simples para tentar ilustrar algo com Sockets, somente nesse ponto de mostrar banner de serviço.
  • 45. Como procurar uma vulnerabilidade ? ● ● A partir disso poderá fazer seu próprio scanner de banners, para chegar ao nível do Nmap esta bem longe, teria que usar raw sockets para chegar num nível stealth e usar spoofing entre outras coisas... última dica o paper "The Art of Port Scanning" do Fyodor. Claro que tem alguns protocolos como o HTTP que além de poder ver a versão do servidor,podemos testar inputs na URL para tentar um possível DoS rumo a um "crash" ,podemos explorar falhas nos sistemas web hospedados, bem como procurar padrões para SQL injection,XSS,Local file injection,remote file injection , disclosure...
  • 46. Vulnerabilidade na Prática ● Nestes tempos 60% das falhas expostas são WEB ou seja estão dentro do protocolo HTTP, por este número vamos focar agora em web pelo menos nesta parte de descobrimento, sem falar que é bem mais fácil descobrir falhas em aplicações web, pois proteções como ASLR,PAX não afetam aplicações no protocolo HTTP, claro que um WAF(web application firewall) pode atrapalhar mas nada no ramo de software é 100% certo,mesmo com um bom Sniffer dando parser com uma regex"expressão regular" genial,pode ter alguém para burlar.
  • 47. SQL injection ● ● SQL injection “injeção de SQL” ocorre quando o atacante consegue inserir uma série de instruções SQL dentro de uma “query” , através da manipulação da entrada de dados de uma aplicação. Isso pode ocorrer tanto via ARGV”argumento”,como em um form em uma GUI,via HTTP com POST,GET,COOKIE via OCR, Basta ter input !
  • 48. SQL injection ● Não gosto de teoria adoro a prática , então desenvolvi dois códigos vulneráveis a SQL injection, um em Linguagem C com LibCGI, e outro em PHP. ● Sim é um wargame bem simples ● http://bugsec.googlecode.com/files/Coolers_sqli_game.zip ● https://github.com/CoolerVoid/neilmonkey
  • 49. SQL injection ● Antes de ir para a prática com SQL injection , vamos entender o funcionamento comum de um sistema Web que usa banco de dados.
  • 50. SQL injection ● Vamos ver o front do nosso sistema vulnerável
  • 51.
  • 52. SQL injection ● Tentamos testar com uso de ' para ver log de erro ● Veja esta vulnerável a SQL injection ● Sabendo disso podemos fazer algo sério exemplo: '; DROP TABLE neiluser;-imagine impacto disso em um sistema com muitos usuários...
  • 53. SQL injection ● Uma dica em ataques de SQL injection , usar o sqlmap , uma ferramenta feita em python com um banco de querys para fazer Fuzzer em formulários, ao resultar algo o programa deixa a mostra, interessante que ao testar o programa ele tomou controle e deu dump muito além do banco de dados usado, poderia facilitar ai para implantar um backdoor então depois subir privilégios com um exploit local então...
  • 55. SQL injection ● ● ● Questão de 3 minutos o sqlmap deu dump de todo banco de dados e de todas as tabelas.”isso não só a neiluser” , dominou o sistema todo, agora só quebrar algumas hash com john e logar. Devastador o ataque foi um sucesso ! No caso de blackbox usar o argumento -tor ou -proxy do sqlmap pode garantir um anonimato
  • 57. E agora ? Casa caiu ! ● SysAdmin ● DBA ● WebMaster backup ? Snort ? Polícia ? GAME OVER !
  • 58. OCR
  • 61. XSS “Cross-site scripting” ● ● ● ● ● Consiste em uma vulnerabilidade Web, onde o atacante por meio de uma entrada sem filtro manda seu javascript malicioso. Campos de texto de formulários em um POST ou GET Embora seja um ataque muito ignorado , é usado para roubar cookies, o que pode ser devastador. Logar na conta do usuário ,pelo fato do usuário abrir uma URL vulnerável a XSS, por meio de roubo de cookies. Outros ataques...
  • 65. RFI “Remote File Inclusion” ● Um tipo de vulnerabilidade onde o atacante inclui um arquivo remoto,através de entradas do sistema alvo.
  • 68. LFI “Local File Inclusion” ● ● Um tipo de vulnerabilidade onde o atacante inclui um arquivo Local,através de entradas do sistema alvo. Mesma ideia de RFI porém algo local exemplo: ● http://alvo.com/index.php?file=../../../../etc/passwd
  • 69. LFI “Local File Inclusion”
  • 70. Burlando filtro de um web application firewall ● Ao encontrar um sistema vulnerável , algumas vezes nos deparamos com algum erro inesperado, se esta vulnerável por que não consegue explorar ? ● HoneyPot ● Um WAF “web application firewall” ● São problemas a se pensar , como nem tudo na vida é 100% seguro . . .
  • 71. Burlando filtro de um web application firewall ● ● ● Filtros em aplicações web ,são feitos da leitura do protocolo HTTP, bem como passar por várias expressões regulares para achar certos padrões baseados em uma “black list”, para assim poder bloquear acesso e logar o ataque. Então podemos tentar entender certos filtros Codificar(encode) dados do POST,GET,COOKIE para estar enganando filtros...
  • 72. ● .
  • 74. Fuzzer ● ● ● ● ● http://bluered.sourceforge.net/ Ferramenta para pegar todas URLs de um host, então testar INPUTs baseadas de uma lista. Testa um por um, o que retornar algo interessante rotula como vulnerável. Ferramenta feita em Perl pelo meu amigo “Victor Ramos Mello” o “m0nad”, do grupo de pesquisa que faço parte BugSec. Bom de um Fuzzer que a partir de testes brutos ele descobre falhas novas, que scanners como nikto não iriam conseguir já que são baseados em falhas já existentes.
  • 75. Fuzzer ● ● ● ● ● http://bluered.sourceforge.net/ Ferramenta para pegar todas URLs de um host, então testar INPUTs baseadas de uma lista. Testa um por um, o que retornar algo interessante rotula como vulnerável. Ferramenta feita pelo meu amigo “Victor Ramos” o “m0nad”, do grupo que faço parte BugSec Bom de um Fuzzer que a partir de testes brutos ele descobre falhas novas, que scanners como nikto que não são inteligentes não conseguiriam.
  • 76. Backdoor,web Shells... ● ● ● ● ● Tanto no underground, como no meio de segurança em geral é tradição falar de Backdoors. Já esta fora de moda Backdoors simples com netcat ou em Web como shells r57,c99 etc... Mesmo por que uma varredura com Nmap já irá revelar a porta, ou no caso de HTTP algum aplicativo poderá apontar o local do mesmo bloquear... Sniffer com analisador de CMDs poderá dificultar etc... Usar Raw sockets ? Genial assim nem o Nmap acharia a porta , mas para usar Raw precisaria ser Root...
  • 77. Backdoor,web Shells... ● ● https://github.com/CoolerVoid/Cakeman Uma das muitas soluções , um backdoor utilizando COOKIE, claro que um WAF poderá detectar ,mas se codificar “encode” pode dar mais trabalho achar, fora que o serviço vai usar o protocolo HTTP, diminui as suspeitas.
  • 82. ● Muito Obrigado ! . Amigos do Bugsec : Tiago Natel,Victor Ramos, Felipe Pena, Bellani, Sergio Renan.