Análise inicial de Malware.

Esta é uma apresentação que fiz há uns anos e que tem por objetivo mostrar como podemos fazer uma análise inicial de malware.

Serve para qualquer pessoa pelo menos ter um conhecimento adicional do malware que a infecta e ter informação necessária para poder realizar pesquisas e trocar conhecimento nos fóruns para o efeito.

Aqui fica o Vídeo e espero que seja útil.

www.hjfr-info.com/MyPresentations/AnaliseEstaticaBasicaMalware/index.html

NetFlow vs Sflow

Netflow vs Sflow

 
Muitas pessoas acham que ambos são a mesma coisa outros acham que é preferível um ao outro.
Na realidade são coisas diferentes e que se podem complementar entre si.
Netflow nunca irá funcionar como o Sflow ou o inverso.
Cada um tem a sua forma de trabalhar e serve o seu objectivo.
 
Vamos ver quais as funcionalidades de cada um e onde podem ser implementados:

Netflow:

É um acrónimo para Network Flows quebra as comunicações TCP/IP em dados estatísticos baseados em “flows” de comunicações.
 
O que é um flow? 
É um fluxo de pacotes num único sentido com base numa origem especifica e num destino especifico.
ex: Se iniciarmos uma sessão telnet para o netflow essa sessão é composta por 2 flows de trafego uma outbond e outra inbound.
 
Todos os pacotes pertencentes ao mesmo flow tem 7 coisas em comum

  1. todos tem o mesmo ip de origem
  2. todos tem o mesmo ip de destino
  3. todos tem a mesma source port
  4. todos tem a mesma destination port
  5. todos tem de ter o mesmo protocolo L3
  6. Todos tem de ter o mesmo valor de tipo de serviço (TOS value)
  7. Mesmo interface fisico ou virtual.


Os primeiros 4 são os que definem o “flow”

Versão 9 é a ultima versão e já inclui mais campos incluindo MPLS e endereços de IPv6 e portas.
Configuração de exemplo
R1(config)# interface fastethernet0/0
R1(config-if)# ip flow ingress
R1(config-if)# ip flow egress
R1(config-if)# exit
R1(config)# ip flow-export destination 10.1.10.100 99
R1(config)# ip flow-export version 9
R1(config)# ip flow-export source loopback 0
R1(config)# end
maior parte das vezes utiliza a porta 9996 apesar de nao ter porta especifica
Examinar Netflow Cache
R1# show ip cache flow
IP packet size distribution (
255 total packets):
1-32   64   96  128  160  192  224  266  268  320  352  384  416  448  480
.000 .000 .000 1.00 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000

512  544  576 1024 1546 2048 2560 3072 3684 4096 4608
.000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000

IP Flow Switching Cache, 4456704 bytes
1 active, 65535 inactive, 1 added
32 ager polls, 0 flow alloc failures
Active flows timeout in 30 minutes
Inactive flows timeout in 15 seconds
IP Sub Flow Cache, 533256 bytes
1 active, 16383 inactive, 1 added, 1 added to flow
0 alloc failures, 0 force free
1 chunk, 1 chunk added
last clearing of statistics never
Protocol         Total    Flows   Packets Bytes  Packets Active(Sec) Idle(Sec)
——–         Flows     /Sec     /Flow  /Pkt     /Sec     /Flow     /Flow

SrcIf         SrcIPaddress    DstIf         DstIPaddress    Pr SrcP DstP  Pkts
Fa0/0         10.10.1.1       S0/0/0        10.10.2.2       01 0200 0050   255

Confirmar uma implementação de netflow Cisco
R1# show ip flow interface
FastEthernet0/0
  
ip flow ingress
ip flow egress

R1# show ip flow export
Flow export v9 is enabled for main cache
Export source and destination details :
VRF ID : Default
Source(1)       1.1.1.1 (Loopback0)
Destination(1)  10.1.10.100 (99)
Version 9 flow records

0 flows exported in 0 udp datagrams
0 flows failed due to lack of export packet
0 export packets were sent up to process level
0 export packets were dropped due to no fib
0 export packets were dropped due to adjacency issues
0 export packets were dropped due to fragmentation fail ures
0 export packets were dropped due to encapsulation fixup failures
R1#

sflow:

É um protocolo feito de forma mais genérica para métricas de trafego de rede. Esta desenhado para pertencer a qualquer dispositivo de rede e permite fornecer constantes dados estatísticos sobre a rede. (L2, L3, L4 até L7). Com sflow todo o trafego numa rede pode ser caracterizado e monitorizado. 
Estas estatísticas são essenciais para controlo de congestionamento, segurança e desenho de rede.
O equipamento captura uma amostra de pacotes por interface e envia essa amostra para um colector.
Não esta limitado ao IP podendo funcionar também noutros protocolos como IPX, NetBEUI etc.
Utiliza amostras de trafego para as suas estatísticas podendo haver alguma incorrecção.

Qual melhor a usar? 
Depende das nossas necessidades, das capacidades de equipamento e orçamento.

Spanning-Tree Protocol Toolkit

Ao contrário do que algumas pessoas pensam o STP toolkit não é nenhuma ferramenta disponível para nos ajudar com o protocolo STP.

São sim, um conjunto de extensões que a CISCO fez à sua implementação do protocolo para o tornar mais eficiente.

Spanning-Tree protocol permite que as redes da camada 2 do modelo de OSI (Layer 2) com redundancia funcionem em condições preveningo loops indesejaveis. Este algoritmo automaticamente calcula a topologia e decide quais as portas que devem ficar em standby para impedir loops na rede, garantindo assim uma maior eficiencia.

Por defenição o comportamento do protocolo é determinista ou seja nós sabemos exactamente como se deve comportar numa rede. Por vezes não o é, seja por alterações feitas na rede ou por aparelhos na camada de acesso que são controlados pelos utilizadores finais ou falhas de ligações.

Para optimizar a performance do protocolo a CISCO fornece o STP toolkit. Este conjunto de ferramentas permite optimizar e tornar mais seguras as redes L2 (Layer 2).

As ferramentas que fazem parte deste kit são:

PortFast – Faz com que as portas do equipamento entrem em estado forwarding imediatamente, passando assim os estados normais de aprendizagem. A porta configurada ainda faz parte da topologia STP e pode imediatamente transitar de estados diminuindo assim o tempo de convergencia. Podendo passar ao estado blocked se necessario. Pode ser activada em portas trunk Pode ter valores operacionais diferentes dos configurados.

notas:

  1. Deve ser utilizada apenas em portas de acesso.
  2. Deve ser utilizada apenas nas portas em que se ligam equipamentos terminais para evitar a criação de um loop.
  3. Activar a funcionalidade numa porta ligada a um switch pode criar um “bridging loop” temporário.

BPDUGuard – Quando activa desliga a porta que recebe um BPDU (Bridge Protocol Data Unity). Permite uma maior segurança contra más configurações porque o administrador pode colocar a porta de novo a funcionar. Quando configurado ao nivel de uma porta coloca a porta imediatamente em estado desligado independentemente da configuração PortFast.

notas:

  1. Numa configuração válida as portas configuradas como PortFast não recebem BPDU caso recebam há um erro de configuração ou algo que necessita ser investigado.
  2. Quando configurado globalmente aplica-se a todas as portas que estão operacionais e com o PortFast activo.

BPDUFilter – Impede uma porta de receber ou enviar BPDU

notas:

  1. Pode ser configurado por porta.
  2. Pode ser configurado globalmente
  3. Quando configurado em portas que não estejam ligadas a equipamentos terminais pode causar loops.
  4. Se uma porta não estiver no seu estado por defeito a configuração PortFast não afecta o filtro de BPDU PortFast.

UplinkFast – Fornece Convergência depois de uma falha na ligação, permite balanceamento de carga com a utilização de grupos de Uplink.
notas:

  1. Pode ser util no desenho de redes-
  2. Quando activa afecta todas as VLAN’s no equipamento.
  3. Não pode ser configurada em VLAN’s individuais.
  4. As melhorias ao “rapid” STP incluem estas funcionalidades.

RootGuard – Previne uma porta de se tornar uma root port ou blocked port.
Quando configurada numa porta e esta recebe um valor de BPDU superior ela passa imediatamente ao valor de de Root-Inconsistent (Blocked) state.

BackboneFast – Iniciado quando uma root port ou uma porta bloqueada recebe um BPDU de valor inferior de um designated Bridge.
Permite uma maior rapidez em caso de falha.

LoopGuard – Ajuda a prevenir “bridging loops” que pode ocorrer devido a falhas de ligações unidirecionais. Quando activado globalemte aplica-se a todas as ligações ponto a ponto. Detecta as portas em estado blocked e as root ports garantindo que continuam a receber informação das portas designadas do systema. Pode ser activado por porta. É autmaticamente aplicado a todas as intancias de VLAN’s activas no systema. Quando activado numa ligação Etherchanel pode afectar todas as conecções até que a conecção com problemas seja removida do link agregado.

Testar Portas SMTP e Validar Utilizadores

Testar SMTP e utilizadores

Há imensas aplicações para testar portas de servidores, uma mais complexas outras mais simples.
Apesar do universo ter uma escolha não estava satisfeito.
Decidi criar a minha aplicação, como estava a tentar aprender Python decidi começar a fazer um simples esboço em Python.
Esta aplicação estabelece uma ligação á porta 25 (SMTP) e tenta verificar se um utilizador especifico existe.

Como entrada do scritpt recebe um ficheiro (smtpServers.txt) com uma lista de máquinas que queremos testar a porta 25 o retorno é feito para o ecrã.

Aqui fica o meu primeiro script em Python…

#!/usr/bin/python
import socket
import sys
if len(sys.argv) !=2:
	print "Usage: SMTP_Test "
	sys.exit(0) 
	#ReadFile with Machines
	f = open('../smtpServers.txt','r')
	lines = f.readlines()
	f.close 
	for x in lines:
	    #Create Socket
	    print x
	    s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	    #Connect to the Server
	    connect=s.connect((x,25))
	    #receive Banner
	    banner=s.recv(1024)
	    print banner
	    #VRFY a user
	    s.send('VRFY ' + sys.argv[1] + 'rn')
	    result=s.recv(1024)
	    print result
	#close the socket

Novas funcionalidades do Windows 8 – Secure Boot

Secure boot.
Aparentemente o windows 8 vai ter novas funcionalidades em relação ao boot.

É sabido que uma das grandes dores de cabeça em termos de segurança é o controlo da parte de boot do sistema operativo das nossas máquinas.

A Fase em que a BIOS acaba de entrar e o S.O. começa a arrancar é uma das mais criticas. É aqui que se pode subverter a segurança implementada no S.O. arrancando com outro S.O. que permita a corrupção do existente ou mesmo instalando aquilo a que vulgarmente se chama de root kit.

Com o windows 8 e as novas BIOS UEFI (Unified Extensible Firmware Interface) a Microsft veio tentar alterar o paradigma.

O UEFI inclui uma opção de secure boot para impedir “Boot Loader Attacks”.

Qualquer código que é carregado na fase de boot do sistema terá que estar identificado com uma chave de segurança permitindo ao UEFI bloquear qualquer tentativa de correr código não autorizado.

Os fabricantes O.E.M terão de implementar esta funcionalidade para obterem certificação do seu equipamento (autocolante de windows 8 compatible.)

Para o utilizador esta funcionalidade é muito boa, mas para o fabricante a funcionalidade também é excelente, porque passa a existir uma base de dados de chaves “Key Enrollment Key database (KEK)” onde a microsoft poderá realizar a actualização de chaves para novos S.O. mas também poderá revogar chaves para os seus sistemas operativos que terão sido comprometidos ou na minha opinião pirateados!

A forma de funcionar é simples, haverão várias bases de dados de chaves que serão consultadas no processo de boot.
Depois de validadas o windows arranca o software “Anti-Malware”.
Finalmente o windows arranca os “Kernel Drivers” e inicializa o “User Mode”

Mais informações em http://www.hjfr-info.com/Noticias/NoticiasRecentes.php

NAT

Network address translation é uma tecnologia que nos permite resolver problemas de conectividade em redes que utilizam endereços não roteáveis ou que se sobrepõem a outros já existentes.
Na maioria dos casos NAT permite a utilização de endereços ipv4 não registados para a ligação á internet.
Os dispositivos que têm um nat configurado traduzem em tempo real os endereços privados da rede para um ou mais endereços públicos válidos.

Esta tradução de endereços adiciona um nível de segurança na nossa rede pois impede a divulgação de endereços internos na rede externa.

Os dispositivos NAT também podem funcionar de forma inversa, traduzindo múltiplos endereços públicos para um ou mais endereços privados.

Vantagens do NAT:
  1. Eliminação de utilização de endereços públicos (registados) por cada um dos hosts que se ligam a redes externas.
  2. Preserva os endereços utilizando a. Multiplexagem de portas para todas as comunicações com o exterior. (permite a utilização do mesmo endereço publico por vários hosts privados).
  3. Permite conectividade entre redes existentes com endereços sobrepostos.
  4. Permite a migração de endereçamento de uma forma fácil e organizada.
Desvantagens:
  1. Determinados protocolos escondem os seus endereços de ip fora do header. ( embedded ip address ) Os NAT’s dinâmicos necessitam de manter informação de estado que nem sempre está disponível.
  2. O NAT interfere com alguns sistemas de cifra e autenticação.
  3. Em alguns casos dificulta a análise de logs sendo necessário correlacionar esses logs com outros existentes.
Existem Vários tipos de NAT.
  1. NAT estático. Traduz um endereço único interno para um endereço específico externo. (ambos os endereços são fixos)
  2. NAT dinâmico. Traduz um endereço interno para um endereço externo temporariamente. (quando o endereço interno deixa de usar o publico este fica disponível para outras ligações. A relação contínua de um para um.)
  3. PAT estático – Á semelhança de um nat estático traduz múltiplos endereços internos para um externo mantendo a porta utilizada.
  4. PAT dinâmico (Overload). – Traduz múltiplos endereços internos para um ou mais endereços externos mantendo, se possível, a porta utilizada escolhendo para isso um dos endereços de ip externos disponíveis, caso não seja possível, utiliza a próxima porta disponível num qualquer endereço externo.
Formas de configuração:
Nat Estático
1
2
3
4
5
6
7
enable
configure terminal
ip nat inside source static 192.168.1.2 209.200.160.100
interface fa 0/0 Interface com ligação ao interior
ip nat inside
interface fa0/1 Interface com ligação ao exterior
ip nat outside
Nat Dinamico
1
2
3
4
5
6
7
8
9
enable
configure terminal
access list 11 permit 192.168.1.0 0.0.0.255 Criação da lista de endereços que podem ser traduzidos pelo nat
ip nat pool nomepool 209.200.160.100 209.200.160.110 prefix-lenght 24 conjunto de endereços externos que vão ser usados na tradução dos endereços internos.
ip nat inside source list 1 pool nomepool associação dos endereços internos á pool de endereços externos
int fa 0/0 interface da rede interna
ip nat inside
int fa 0/1 interface da rede externa
ip nat outside
Este nat dinâmico tem a tradução de endereços 1 para 1 ou seja só se conseguem ligar á rede externa 10 endereços internos de cada vez, visto apenas termos 10 externos na pool de endereços.
Se houver um 11 pedido este não vai ter sucesso na sua tradução para um endereço externo.
PAT estático
1
2
3
4
5
6
7
8
9
enable
configure terminal
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat pool nomepool 209.200.160.100 209.200.160.100 prefix-length 24
ip nat inside source list 1 pool nomepool overload
int fa0/0
ip nat inside
int fa0/1
ip nat outside
PAT Dinamico
1
2
3
4
5
6
7
8
9
enable
configure terminal
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat pool nomepool 209.200.160.100 209.200.160.110 prefix-length 24
ip nat inside source list 1 pool nomepool overload
int fa0/0
ip nat inside
int fa0/1
ip nat outside
Por defeito o equipamento guarda as tabelas nat por tipo de ligação algum tempo.

Aqui ficam os tempos por defeito que podem ser alterados:

· UDP – 5minutos
· TCP (sessão) – 24 horas
· SYN – 1 minuto
· FIN/RST – 1 minuto
· DNS – 1 minuto
· ICMP – 1 minuto
Por fim deixo uma configuração NAT que pode ser usada quando temos redes que se sobrepõem e cujo trafego a ser feito nat é da rede externa para a rede interna…
1
2
3
4
5
6
7
8
9
enable
configure terminal
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat pool nomepool 192.168.1.2 192.168.1.10 prefix-length 24
ip nat outside source list 1 pool address pool
interface fa 0/0
ip nat inside
interface fa 0/1
ip nat outside

Mais informação sore o NAT

  1. Inside Local – Endereço pertencente ao host interno
  2. Inside Global – Endereço do host interno visualizado pelos hosts externos
  3. Outside Local – Endereço externo visualizado pelos hosts internos
  4. Outside Global – Endereço do host externo

Configurar SNMP Básico

Para activarmos o SNMP no nosso equipamento Cisco é necessário escrever os seguintes comandos:

enable
configure terminal
snmp-server contact xpto at “numero telefone” (numero de contacto)
snmp-server location rua x (morada)
snmp-server chassis-id 123456 (numero de serie do dispositivo)

Configurar visualizações de SNMP.

snmp-server view ciscoview mib-2 included  (criar e incluir uma visualização de SNMP (sub-tree))


Configurar uma comunidade SNMP

snmp-server comunity xpto ro (criação de uma view com permissões de leitura ao conteúdo total da MIB)
snmp-server comunity xpto2 view ciscoview (criação de uma view com permissões apenas para a “sub-tree” da MIB-2 definida anteriormente.)

Configurar SSH sem host name e domain Name

Para configurar SSH num equipamento cisco sem hostname e sem domain name podemos recorrer aos seguintes comandos:

1
2
3
4
5
enable
configure terminal
ip ssh rsa keypair-name ciscopair
generate rsa usage-keys label ciscopair modulus 1024
ip ssh version 2

RBAC – role based access control

É uma forma de controlo de acessos que restringe o acesso aos recursos baseado-se nas funções dos utilizadores.

Este método de controlo pode ser utilizado pelas grandes empresas para atribuir acessos aos funcionários tendo por base a sua função.

Assim consegue-se cumprir as melhores recomendações de segurança segregando acessos e atribuindo privilégios de administração a quem de direito.

Para activar a funcionalidade num router ou switch cisco temos de seguir os seguintes passos:

1 – activar as “cli view’s”
2 – configurar as várias “cli views” para os diferentes administradores
3 – opcionalmente pode-se criar views para grupos diferentes de utilizadores com passwords diferentes para aceder a um “CLI” particular.

Comandos:

1:
Enable
Configure terminal
Enable view ( entra em modo root view que permite criar varias views)

2:
Parser view my-view ( criar um nome de view)
Secret xpto (atribuir um enable secret)
Commands exec include show access-list (especificar comandos no modo exec.)
Commands exec include configure terminal ( especificar comandos no modo exec.)
Commands configure include ip access-list extended (especificar comandos no modo de configuração)
Commands Ipneacl include all deny ( especificar sub comandos do modo de configuração)
Commands ipenacl all permit

As opções possíveis são:

Include – adiciona um comando especifico ou interface a uma view
Include-exclusive – adiciona um comando especifico ou interface numa view mas exclui o comando de todas as outras
Exclude – nega acesso ao comandos especificados.
All – funciona como wildcard.