O Nmap é bastante conhecido por mapear redes e identificar portas abertas/fechadas (veja neste post), mas não se limita a isso. Ele pode ser utilizado para verificar quais cifras TLS (normalmente referenciado como SSL) estão disponíveis em um servidor Web, verificar a existência de vulnerabilidades, enumerar HTTP e SMB, fazer brute force em Telnet, SSH, FTP e VNC, e ainda dezenas de outras opções. Os exemplos acima são possíveis graças ao NSE – Nmap Scripting Engine, e todos eles estão disponíveis com a instalação no Nmap. Além disso, podemos criar scripts personalizados, utilizando a linguagem LUA. Os scripts ficam na pasta: Linux: /usr/share/nmap/scripts Windows: C:\Program Files (x86)\Nmap\scripts Exemplos de Scripts Nmap Podemos usar a opção –sc para o Nmap executar um grupo padrão de scripts, ou usar a opção –scritp nome_do_script.nse se quisermos executar um script específico. Também podemos referenciar parte do nome, e assim todos os scripts que tiverem essa string serão executados (ex. –script “http” vai executar todos os scritps que tiverem http no nome). Use o comando ls –lh na pasta onde estão os scripts para ver todas as opções. ssl-enum-ciphers.nse: Script para verificar quais versões TLS e quais cifras um servidor aceita. Útil para identificar servidores usando versões menos seguras (TLS 1.0 e 1.1 por exemplo) ou cifras fracas. └─$ nmap brainwork.com.br –script ssl-enum-ciphers -p443 Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-14 14:57 EDT Nmap scan report for brainwork.com.br (108.179.193.84) Host is up (0.16s latency). rDNS record for 108.179.193.84: 108-179-193-84.unifiedlayer.com PORT STATE SERVICE 443/tcp open https | ssl-enum-ciphers: | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (ecdh_x25519) – A | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (ecdh_x25519) – A | TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) – A | TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) – A | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) – A | compressors: | NULL | cipher preference: server | TLSv1.3: | ciphers: | TLS_AKE_WITH_AES_256_GCM_SHA384 (ecdh_x25519) – A | TLS_AKE_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) – A | TLS_AKE_WITH_AES_128_GCM_SHA256 (ecdh_x25519) – A | cipher preference: server |_ least strength: A Nmap done: 1 IP address (1 host up) scanned in 7.06 seconds vulners.nse: Script que lista vulnerabilidades conhecidas para aplicação identificada, inclusive citando o CVE. └─$ nmap -sV –script vulners.nse 192.168.15.13 -p22 Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-14 15:01 EDT Nmap scan report for 192.168.15.13 Host is up (0.00053s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0) | vulners: | cpe:/a:openbsd:openssh:4.7p1: | SECURITYVULNS:VULN:8166 7.5 https://vulners.com/securityvulns/SECURITYVULNS:VULN:8166 | CVE-2010-4478 7.5 https://vulners.com/cve/CVE-2010-4478 | CVE-2008-1657 6.5 https://vulners.com/cve/CVE-2008-1657 | SSV:60656 5.0 https://vulners.com/seebug/SSV:60656 *EXPLOIT* | CVE-2010-5107 5.0 https://vulners.com/cve/CVE-2010-5107 | CVE-2012-0814 3.5 https://vulners.com/cve/CVE-2012-0814 | CVE-2011-5000 3.5 https://vulners.com/cve/CVE-2011-5000 | CVE-2008-5161 2.6 https://vulners.com/cve/CVE-2008-5161 | CVE-2011-4327 2.1 https://vulners.com/cve/CVE-2011-4327 | CVE-2008-3259 1.2 https://vulners.com/cve/CVE-2008-3259 |_ SECURITYVULNS:VULN:9455 0.0 https://vulners.com/securityvulns/SECURITYVULNS:VULN:9455 Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 0.85 seconds http-enum.nse: O HTTP Enumeration lista diretórios e páginas em um servidor HTTP. └─$ nmap –script http-enum.nse 192.168.15.13 -p80 Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-14 15:05 EDT Nmap scan report for 192.168.15.13 Host is up (0.00049s latency). PORT STATE SERVICE 80/tcp open http | http-enum: | /tikiwiki/: Tikiwiki | /test/: Test page | /phpinfo.php: Possible information file | /phpMyAdmin/: phpMyAdmin | /doc/: Potentially interesting directory w/ listing on ‘apache/2.2.8 (ubuntu) dav/2’ | /icons/: Potentially interesting folder w/ directory listing |_ /index/: Potentially interesting folder Nmap done: 1 IP address (1 host up) scanned in 0.96 seconds ftp-anon.nse: Script para testar se um servidor FTP aceita conexão anônima. └─$ nmap –script ftp-anon.nse 192.168.136.129 -p21 Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-08 09:24 EST Nmap scan report for 192.168.136.129 Host is up (0.00052s latency). PORT STATE SERVICE 21/tcp open ftp |_ftp-anon: Anonymous FTP login allowed (FTP code 230) Nmap done: 1 IP address (1 host up) scanned in 13.26 seconds ftp-brute.nse: E se o servidor FTP não aceitar conexão anônima, que tal tentar um brute force (não faça isso sem autorização!)? No exemplo abaixo encontrou as credenciais user/user. └─$ nmap –script ftp-brute.nse 192.168.15.13 -p21 Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-14 15:33 EDT NSE: [ftp-brute] usernames: Time limit 10m00s exceeded. NSE: [ftp-brute] usernames: Time limit 10m00s exceeded. NSE: [ftp-brute] passwords: Time limit 10m00s exceeded. Nmap scan report for 192.168.15.13 Host is up (0.0010s latency). PORT STATE SERVICE 21/tcp open ftp | ftp-brute: | Accounts: | user:user – Valid credentials |_ Statistics: Performed 3675 guesses in 602 seconds, average tps: 6.1 Nmap done: 1 IP address (1 host up) scanned in 602.18 seconds Bônus Track Se deixar o Wireshark rodando enquanto tenta o brute force, é possível ver quais foram as credenciais que o Nmap usou no teste. Para isso, após o término, clique em Tools > Credentials. Outra opção, ainda no Wireshark, é usar o filtro ftp.request.command == “USER”. E com o filtro ftp.response.arg == “Login successful.” conseguimos ver a resposta de login com sucesso. Se selecionarmos este pacote e aplicarmos um filtro (botão direito no pacote, Conversation Filter > TCP), veremos todo o processo com as credenciais que funcionaram (user/user). Mais informações no Nmap Reference Guide (capítulo 9 e capítulo 15). Até a próxima.
Comandos básicos para Nmap
O Nmap é uma ferramenta de código aberto que é amplamente utilizada para descobrir hosts e serviços em uma rede. Ele é um scanner de portas que pode ser usado para verificar quais portas estão abertas em um determinado dispositivo e quais serviços estão sendo executados nesses dispositivos. O Nmap é usado por administradores de rede, auditores de segurança, pentesters e entusiastas de tecnologia em todo o mundo. Uma das principais vantagens do Nmap é que ele pode ser executado em uma variedade de sistemas operacionais, incluindo Windows, Linux e MacOS. Ele é altamente configurável e pode ser usado para executar tarefas simples, como verificar se um host está online, ou tarefas mais complexas, como varreduras de vulnerabilidades. O Nmap pode ser usado para identificar vulnerabilidades em dispositivos e serviços, permitindo que os administradores de rede corrijam esses problemas antes que eles possam ser explorados por hackers mal-intencionados. Ele também pode ser usado para identificar dispositivos em uma rede, permitindo que os administradores tenham um melhor controle sobre sua infraestrutura e identifiquem possíveis pontos de falha. No entanto, é importante lembrar que o uso inadequado do Nmap pode ser ilegal e antiético. Antes de usar o Nmap em qualquer sistema, os usuários devem obter permissão explícita do proprietário do sistema ou da rede. Além disso, os usuários devem estar cientes das leis locais e das políticas da empresa antes de usar o Nmap em qualquer ambiente de produção. Em resumo, o Nmap é uma ferramenta poderosa e versátil que é usada por uma ampla gama de profissionais de segurança e tecnologia. Com seu conjunto de recursos altamente personalizáveis, o Nmap é uma ferramenta valiosa para qualquer pessoa que precise identificar dispositivos em uma rede, verificar a segurança de uma rede ou identificar vulnerabilidades potenciais. *Texto criado pelo ChatGPT Opções de Scan no Nmap Após essa breve introdução criada pelo nossa amiga inteligência artificial, vamos à algumas das opções mais comuns. Note que para alguns tipos de scan é necessário privilégio administrativo. -sS (TCP SYN scan/Half-Open Scan): Modo padrão (não precisa colocar o -sS), onde usamos o comando “nmap destino”, sendo que destino pode ser um host ou uma rede. O Nmap vai scannear as 1000 portas TCP mais comuns, e para isso serão enviados pacotes SYN. Uma resposta SYN/ACK indica que o serviço está disponível no destino (open). Um RST indica que o serviço (porta) não está disponível (closed), e se não houver resposta a porta é marcada como “filtered” (a consulta pode ter sido bloqueada por um firewall no host ou na rede). Além das 3 opções de estado de porta citados acima (open, closed e filtered), que são as mais comuns, ainda temos 3 outras: Unfiltered: Indica que a porta está acessível mas o Nmap não foi capaz de determinar se está aberta ou não. Open|Filtered: O Nmap coloca as portas neste estado quando não consegue determinar se uma porta está aberta ou filtrada. Closed|Filtered: O Nmap coloca as portas neste estado quando não consegue determinar se uma porta está fechada ou filtrada. Portas abertas no site scanme.nmap.org, utilizado para testes Pacotes TCP SYN para cada porta escaneada -F (Fast Scan): utilizando a opção “-F”, o scan é feito apenas nas 100 portas mais comuns, o que acelera o processo. └─$ nmap -F scanme.nmap.org Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-13 13:56 EDT Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.21s latency). Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f Not shown: 97 closed tcp ports (conn-refused) PORT STATE SERVICE 22/tcp open ssh 25/tcp filtered smtp 80/tcp open http Nmap done: 1 IP address (1 host up) scanned in 3.43 seconds -p ou –top-ports (porta específica ou Top Ports): Podemos ser ainda mais diretos e especificar a porta (ou range) que queremos verificar, utilizando a opção “-p”. Outra opção é utilizar o –top-ports e dizer quantas das portas mais comuns quer verificar (ex. nmap –top-ports 20 scanme.nmap.org vai escanear as 20 portas mais comuns). Abaixo verificando as portas TCP de 20 a 30. └─$ nmap -p20-30 scanme.nmap.org Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-13 13:57 EDT Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.21s latency). Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f PORT STATE SERVICE 20/tcp closed ftp-data 21/tcp closed ftp 22/tcp open ssh 23/tcp closed telnet 24/tcp closed priv-mail 25/tcp filtered smtp 26/tcp closed rsftp 27/tcp closed nsw-fe 28/tcp closed unknown 29/tcp closed msg-icp 30/tcp closed unknown Nmap done: 1 IP address (1 host up) scanned in 3.00 seconds -sn (Ping Scan /No port scan): Com esta opção o Nmap vai fazer apenas o discovery do host, sem verificar portas. Apesar do nome, com essa opção é feito o TCP SYN (porta 443) e TCP ACK (porta 80), além do ICMP (echo request e timestamp). Com isso temos mais chances de confirmar se o host está UP. Além disso, se usarmos esta opção no modo privilegiado em uma rede local o Nmap utiliza o ARP para confirmar a existência do host (também mais confiável do que usar o ICMP). Apesar da diferença na execução, o output será o mesmo. └─$ nmap -sn scanme.nmap.org Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-13 16:18 EDT Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.22s latency). Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f Nmap done: 1 IP address (1 host up) scanned in 1.42 seconds └─$ sudo nmap -sn 192.168.15.1 Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-13 16:16 EDT Nmap scan report for 192.168.15.1 Host is up (0.033s latency). MAC Address: 10:72:23:5E:70:33 (Tellescom Industria E Comercio EM Telecomunicacao) Nmap done: 1 IP address (1 host up) scanned in 0.17 seconds -sU (UDP Scan): Para fazer scan em portas UDP devemos utilizar a opção “-sU”. Nesta opção são enviado pacotes UDP para cada porta a ser testada, e se houver retorno (não é comum), a porta é marcada como Open. Se o retorno for “ICMP port unreachable” (ICMP type 3, code 3), a porta é considerada “closed”. Outros retornos ICMP unreachable (type 3,
CCNA grátis (1500 vagas), e oportunidade de emprego
A Cisco, com o programa CiberEducação Cisco Brasil (edição 25 Anos NetAcad), pretende formar até 1500 profissionais. O programa está com inscrições abertas, e possui 3 fases. Na primeira fase é fornecido o curso online Fundamentos em Cibersegurança, com carga de 30 horas. Qualquer pessoa pode fazer. Ao final desta etapa os 1500 melhores alunos (e que tenham os requisitos abaixo) estarão aptos para seguir para a segunda fase, onde terão o treinamento CCNA1 + CyberOps Associate, via NetAcad, também gratuitamente. Para ser elegível, o aluno precisa: Estar cursando o último ano do Ensino Médio, graduados ou cursando ensino superior ou cursos técnicos, que possuem interesse em trabalhar no segmento de segurança cibernética. Ter acesso a um computador (processador i3, Windows 10, 4Gb de RAM e 27GB de disco rígido) e conexão à internet (5 Mbps) para desenvolver as atividades práticas virtuais. Para a terceira etapa do programa, é necessário o aluno ter o certificado de conclusão do curso da Maratona – “Fundamentos em Cibersegurança” e ficar entre os melhores na prova de seleção voltada à conhecimentos gerais de TI, Redes e Cibersegurança, bem como habilidades interpessoais. Na terceira fase, os alunos poderão ser inseridos no mercado de trabalho, como estagiários ou efetivos, em parceiros e clientes Cisco. A iniciativa da Cisco é uma excelente oportunidade para os alunos brasileiros se tornarem mais familiarizados com a tecnologia e desenvolverem habilidades importantes para o mercado de trabalho. Além disso, a cibereducação contribui para a inclusão digital e democratização do acesso à informação. Se você é aluno ou conhece alguém que pode se beneficiar deste programa, não deixe de conferir a página do Programa CiberEducação Cisco Brasil e começar a sua jornada. Até a próxima.
Cursos CCNA grátis (online) no NIC.br–Março 2023
O NIC.br – Núcleo de Informação e Coordenação do Ponto BR, está disponibilizando gratuitamente o curso CCNAv7, e as inscrições vão até o dia 26 de março. Este curso é ideal para aqueles que desejam aprimorar seus conhecimentos em redes de computadores e se preparar para a certificação Cisco CCNA. O curso CCNAv7 é uma atualização da versão anterior e conta com conteúdos mais atualizados e práticos. Ele é voltado para profissionais da área de TI, estudantes e entusiastas que desejam adquirir conhecimentos em redes de computadores e tecnologias de rede. Além disso, o curso é reconhecido em todo o mundo e é uma excelente forma de melhorar o currículo. Composto por diversos módulos, incluindo conceitos básicos de redes, roteamento e switching, segurança de redes, redes sem fio, virtualização e automatização, será ministrados por instrutores experientes e com certificação Cisco. Além de fornecer uma base sólida em redes de computadores, o curso CCNAv7 também prepara os alunos para a certificação Cisco CCNA. Isso significa que, ao final do curso, os alunos estarão aptos a realizar a prova de certificação e obter um dos certificados mais valorizados na área de redes de computadores. Os interessados devem acessar o site do NIC.br e seguir as instruções para se inscrever. As aulas serão ministradas online e ao vivo, permitindo que os alunos interajam com os instrutores e outros alunos em tempo real. Saiba mais em: https://cursoseventos.nic.br/curso/curso-ccna-ensa-cisco-nicbr *Texto criado pelo ChatGPT. Até a próxima.
Quantidade de regras no firewall Cisco
Quantas regras tenho no meu firewall? Quantas regras meu firewall suporta? Vez ou outra recebo essas perguntas, e para facilitar (pra mim pelo menos), vou deixar algumas informações neste post. Primeiro, no caso dos firewalls Cisco com software FTD, não temos nenhuma limitação “hardcoded”. O que temos são recomendações com base nos testes feito pela Cisco, mas esses número podem variar de acordo com outas funcionalidades ativas na caixa. De qualquer forma é bom termos um limite em mente (e espero que não tenham tantas regras). Note que os números abaixo são referentes aos ACE – Access Control Element (cada linha dentro de uma Access Control Rule). Esses números são de 2020, e com novos softwares podem mudar. Quantas regras tenho no meu firewall? No próprio FMC você vai verificar a quantidade de regras (ACR – Access Control Rule). Basta abrir a Access Control Policy (e na Pre Filter Policy, se houver regras lá) para ver quantas linhas ela tem. Porém, cada ACR pode ter mais de uma ACE. Para saber a quantidade de ACEs é necessário acessar o FMC via CLI, no modo expert, e usar um script em pearl (disponível desde a versão 6.5). > expert admin@brainhqfmc:~$ sudo su Password: root@brainhqfmc:/Volume/home/admin# perl /var/opt/CSCOpx/bin/access_rule_expansion_count.pl Cisco Firepower Management Center for VMware – v7.0.4 – (build 55) Access Control Rule Expansion Computer Enter FTD UUID or Name: > BRAINHQFW01 —————————————————————————————————- Cisco Firepower Management Center for VMware – v7.0.4 – (build 55) Access Control Rule Expansion Computer Access Control Policy: UUID: 0050569B-2B07-0ed3-0000-021474836504 Name: Brain ACP Description: Politica Brainwork Device: UUID: 58d41f9a-2dc2-11eb-8f4e-cea5e9e7bd23 Name: BRAINHQFW01 Date: 2022-Dec-15 at 13:15:28 UTC NOTE: Computation is done on per rule basis. Count from shadow rules will not be applicable on device. Run “Rule Conflict Detection” tool on AC Policy for specified device to detect and optimise such rules. —————————————————————————————————- | UUID | NAME | COUNT | —————————————————————————————————- | 0050569B-2B07-0ed3-0000-000268442625 | BrainLAN to Whatsapp | 165 | | 0050569B-2B07-0ed3-0000-000268436506 | BrainLAN to INET | 135 | | 0050569B-2B07-0ed3-0000-000268436525 | BrainLAN to Video | 105 | | 0050569B-2B07-0ed3-0000-000268436491 | BRAINHQDCS to BRAINHQDC03 | 102 | | 0050569B-2B07-0ed3-0000-000268436536 | BrainData to VPN Clientes | 45 | | 0050569B-2B07-0ed3-0000-000268436515 | BrainDMZ to INET | 27 | | 0050569B-2B07-0ed3-0000-000268436528 | BRAINHQDCS to DNS | 24 | | 0050569B-2B07-0ed3-0000-000268436487 | Acesso UAG | 15 | | 0050569B-2B07-0ed3-0000-000268436538 | BrainLAN to ReceitaNet | 15 | | 0050569B-2B07-0ed3-0000-000268436484 | Acesso Federation | 12 | | 0050569B-2B07-0ed3-0000-000268436527 | BRAINHQDNS to Umbrella | 12 | | 0050569B-2B07-0ed3-0000-000268436483 | Acesso Email | 9 | | 0050569B-2B07-0ed3-0000-000268445753 | Lab 193-194 | 9 | | 0050569B-2B07-0ed3-0000-000268436539 | BrainData to VPN IPSec | 6 | | 0050569B-2B07-0ed3-0000-000268436490 | BrainLAN ICMP Any | 5 | | 0050569B-2B07-0ed3-0000-000268442628 | Block GeoOUT | 3 | | 0050569B-2B07-0ed3-0000-000268436492 | BRAINHQMAIL Email Any | 3 | (output omitted) —————————————————————————————————- | TOTAL: 896 —————————————————————————————————- | Access Rule Elements Count on FTD: 902 —————————————————————————————————- root@brainhqfmc:/Volume/home/admin# No output acima o TOTAL é referente a quantidade de entradas na Access Control Policy, enquanto que o Access Rule Elements Count considera a soma das ACEs na ACP e na Pre Filter Policy. Mais informações podem ser encontradas na apresentação BRKSEC-3455 do Cisco Live. Até a próxima.
Configuração Syslog na VA Umbrella
Na implantação do Cisco Umbrella podemos ter o Virtual Appliance, conhecido como VA. Este componente é um encaminhador DNS condicional, que encaminha as requisições DNS para a cloud Umbrella ou para o DNS Server interno, conforme configuração. Informações sobre os componentes da solução Cisco Umbrella, neste post. Quando necessário, e a partir da VA versão 3.1.x, podemos configurar que os logs da VA sejam enviados para um servidor remoto. Temos 3 tipos de logs na VA: Health: Registra atualizações e reboots. Audit: Logins e todo comando config executado na VA. InternalDNS: Requisições que são encaminhadas para o servidor DNS Interno. Configurando logging (Syslog) para um servidor Externo Para a VA enviar Syslog, precisamos cadastrar o servidor de destino e informar quais tipos de log serão encaminhados. 1) Cadastre o servidor Syslog. UMBRELLAVA01 ~ $ config logexport destination 10.0.15.234:514 udp destination added successfully 2) Informe os logs que deseja enviar para o servidor remoto (neste exemplo health e audit). UMBRELLAVA01 ~ $ config logexport enable health logexport of health enabled to 10.0.15.234:514/udp UMBRELLAVA01 ~ $ config logexport enable audit logexport of audit enabled to 10.0.15.234:514/udp 3) Para verificar a configuração use o comando config logexport status. Mais informações sobre a configuração de logging neste link. Até a próxima.