segunda-feira, 1 de fevereiro de 2016

[TIP] - Improving "Elastic Search command line" security and auditing

Hi there!

As we most know, elasticsearch CLI options are very dangerous when somebody logged at shell, even if they are not root in special default installations.

Since Elastic Search 2.X, by default it only bind on localhost, what increase a lot default installation security. But what if an attacker has somehow access to a non-root user ? Besides that how to track this in paranoid mode ?

To ilustrate this better I'll create this laboratory:
- CentOS 7.1
- Elasticsearch 2.X
- auditd
- iptables
- user segregation (counting that people has different users when logging to your system =))

Step One without hardening logged as a non-root user:
[elkuser@eventidlabs ~]$ whoami
elkuser
[elkuser@eventidlabs ~]$
[elkuser@eventidlabs ~]$ curl http://localhost:9200 -v
{
  "status" : 200,
  "name" : "EventID One",
  "cluster_name" : "eventid",
  "version" : {
    "number" : "1.7.4",
    "build_hash" : "0d3159b9fc8bc8e367c5c40c09c2a57c0032b32e",
    "build_timestamp" : "2015-12-15T16:45:04Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.4"
  },
  "tagline" : "You Know, for Search"
}
As we can see, you could easily run any command since there is no authentication in a default installation (and I dind't add anything to protect ES as a reverse proxy or shield).

But to improve monitoring first we could use audit basic rule:
# auditctl -a exit,always -F arch=b64 -S connect -k ELK
Result will be:
# ausearch -k ELK
type=PROCTITLE msg=audit(01-02-2016 21:18:57.770:191034) : proctitle=curl http://localhost:9200 -v
type=SOCKADDR msg=audit(01-02-2016 21:18:57.770:191034) : saddr=inet host:127.0.0.1 serv:9200
type=SYSCALL msg=audit(01-02-2016 21:18:57.770:191034) : arch=x86_64 syscall=connect success=yes exit=0 a0=0x3 a1=0x7f4484000a40 a2=0x10 a3=0x0 items=0 ppid=22817 pid=22842 auid=elkuser uid=elkuser gid=elkuser euid=elkuser suid=elkuser fsuid=elkuser egid=elkuser sgid=elkuser fsgid=elkuser tty=pts1 ses=1187 comm=curl exe=/usr/bin/curl key=ELK

Now to limit access only from a specific user to ES port we will use iptables with owner module (remember to add a group with logstash, elastic and other users you probably need to connect to this port besides root to make less rules).
 # iptables -I OUTPUT -p tcp --dport 9200:9300 -m owner --uid-owner elkuser -j DROP
[elkuser@eventidlabs ~]$ curl http://localhost:9200 -v
* About to connect() to localhost port 9200 (#0)
*   Trying ::1...
* Connection refused
*   Trying 127.0.0.1...
 And auditd
type=PROCTITLE msg=audit(01-02-2016 21:36:09.016:192757) : proctitle=curl http://localhost:9200 -v
type=SOCKADDR msg=audit(01-02-2016 21:36:09.016:192757) : saddr=inet host:127.0.0.1 serv:9200
type=SYSCALL msg=audit(01-02-2016 21:36:09.016:192757) : arch=x86_64 syscall=connect success=no exit=-115(Operation now in progress) a0=0x4 a1=0x7ffda9338d70 a2=0x10 a3=0x2 items=0 ppid=22817 pid=23071 auid=elkuser uid=elkuser gid=elkuser euid=elkuser suid=elkuser fsuid=elkuser egid=elkuser sgid=elkuser fsgid=elkuser tty=pts1 ses=1187 comm=curl exe=/usr/bin/curl key=ELK
That's not a big deal but we could improve security a bit using those steps. I'm just showing some basic info related to iptables and auditd, specially auditd you could create but of awesome configuration to monitor lot of other stuff as configuration modifications and if user is using sudo to root, you will have auid different from uid.

Besides Elastic Search you could user audit for lot of cool detection and paranoid. I'll create another post in pt_BR about auditd soon.

Good info related to auditd - https://www.digitalocean.com/community/tutorials/understanding-the-linux-auditing-system-on-centos-7

Happy Detection!

Rodrigo "Sp0oKeR" Montoro

domingo, 10 de janeiro de 2016

Feliz 2016!!!! O que vem por ai ....

Caros,

Primeiramente Feliz 2016 com pouco de atraso para todos!!!

Ando meio ausente, porém com várias idéias de posts para fazer e isso voltará a ocorrer conteudo esse ano, sem desculpas, até porque quanto mais posto, mais aprendo. Vamos conectar os pontos e transformar informação em conhecimento, ou eventos em detecções =)

Esse ano, para compartilhar algo aqui, publicamos no Blog da Clavis um artigo juntamente com o podcast + Slides da palestra do (H2HC e JampaSec) com foco no uso do ELK stack para Análise de Logs.

http://www.blog.clavis.com.br/elk-uma-solucao-mais-eficaz-para-o-gerenciamento-de-logs/

2016 será um ano com foco em outros áreas um pouco, digo outras pois temos coisas por vir envolvendo uso de EventID do Windows. Entre os assuntos que postarei, penso:

- Honeypots, criar a série do MHN e projetos relacionados

- Análise de logs (dicas simples até algo mais complexo)

- Hardening

- Detecção de Intrusos
  - Snort e Snort++
  - Suricata
  - Netflow
  - OSSEC
  - WAF

- Elastic Stack (Elastic Search, Kibana, Logstash e o Beats). Criaremos uma série no blog da Clavis, por isso recomendo assinarem lá também =)

- Análise de tráfego (tcpdump, wireshark)

- Machine Learning (isso será aprendizado pra mim e vou compartilhando)

Paralelo a isso, sempre postarei conteúdo e vídeos que ler/assistir, tem muita coisa boa na internet, só precisamos filtrar.

Do resto promessa é dívida e esse ano aguardem por bastante conteúdo, estou em dívida em compartilhar informações.

Aproveitando, estarei no Campus Party em São Paulo nos dias 28 e 29 de Janeiro, se estiverem por lá bora conversar.

Caso tenham alguma sugestão, por favor entre em contato que ser for do meu conhecimento, certamente terei prazer em postar algo.

Happy Detection!

Rodrigo "Sp0oKeR" Montoro

quarta-feira, 2 de dezembro de 2015

[Snort-devel] Snort 2.9.8 RC Now Available

Coisa bem legais por vir no 2.9.8 =)

Snort 2.9.7.6 is now available on snort.org at
http://www.snort.org/downloads in the Snort Stable Release section.

2015-08-28 - Snort 2.9.8_rc

[*] New additions
  *  SMBv2/SMBv3 support for file inspection.
  *  Port override for metadata service in IPS rules.
  *  AppID Lua detector performance profiling.
  *  Perfmon dumps stats at fixed intervals from absolute time.
  *  New preprocessor alert (18:120) to detect SSH tunneling over HTTP
  *  New config option |disable_replace| to disable replace rule option.
  *  New Stream configuration |log_asymmetric_traffic| to control
logging to syslog.
  *  New shell script in tools to create simple Lua detectors for AppID.

[*] Improvements
  *  sfip_t refactored to use struct in6_addr for all ip addresses.
  *  Post-detection callback for preprocessors.
  *  AppID support for multiple server/client detectors evaluating on
same flow.
  *  AppID API for DNS packets.
  *  Memory optimizations throughout.
  *  Support sending UDP active responses.
  *  Fix perfmon tracking of pruned packets.
  *  Stability improvements for AppID.
  *  Stability improvements for Stream6 preprocessor.
  *  Added improved support to block malware in FTP preprocessor.
  *  Added support to differentiate between active and passive FTP
connections.
  *  Improvements done in Stream6 preprocessor to avoid having duplicate
packets in the DAQ retry queue.
  *  Resolved an issue where reputation config incorrectly displayed
'blacklist' in priority field even though 'whitelist' option was configured.

See the Release Notes and ChangeLog for more details.

Please submit bugs, questions, and feedback to bugs@snort.org.

Happy Snorting!
The Snort Release Team

terça-feira, 24 de novembro de 2015

[Video] Making applications secure with NGINX

Vídeo com dicas interessantes, superficial mas bastante coisas pra pensarem =)

- Naxsi
- Repsheet
- IPSet
- Reputation
- Nginx modules



Happy Detection!

Rodrigo Montoro

BLACKFRIDAY: Combo gravações cursos OSSEC + Snort com 50% OFF

Caros,

Entrando no clima da semana blackfriday, estou vendendo os dois treinamentos com 50% de desconto para quem comprar e realizar pagamento até domingo. O valor do combo que originalmente sairia por R$998 ficará apenas R$499,00

Curso OSSEC

1. Entendo funcionamento OSSEC HIDS x NIDS
   1.1. Funcionalidades OSSEC
   1.2. Modos instalação
   1.3. Sistemas suportados
 

2. Instalando o OSSEC
   2.1. Requisitos
   2.2. Modos instalação Local / Agente / Servidor
   2.3. Replicando instalação
 

3. Configurações OSSEC
   3.1. Cliente e Servidor
   3.2. Alertas
   3.3. Regras
 

4. Decoders/Regras
   4.1. Entendendo os Decoders
   4.2. Entendendo as Regras
   4.3. Linkando decoders e regras
 

5. Sistema de Integridade e detecção de rootkits
   5.1. O que é um rootkit?
   5.2. Como funciona a detecção de rootkit do ossec
   5.3. Monitorando a integridade de seu sistema (HIMS)


6. Active Response
   6.1. Active Response disponíveis
   6.2. Configuração de Active Response
   6.3. Ferramentas Active Response
 

7.Usando interface web
   7.1. Instalando a interface web
   7.2. Analisando e pesquisando eventos
 
8. Integração básica Elastic Search / Kibana 

Curso Snort


1-) Introdução a protocolos
2-) Mundo IDS ( NDIS, HIDS , WIDS , KIDS)
3-) Atacantes
4-) Como funciona o Snort
5-) Entendendo a aquisição de dados (DAQ)
6-) Posicionamento dos sensores
7-) Decoders
8-) Preprocessadores (teoria e prática)

       - Frag3
       - Stream5
       - sfPortScan
       - SMTP/POP/IMAP
       - Arp Spoof
       - HTTP Inspect
       - DCE/RPC2
       - Sensitive Data
       - IP Reputation

9-) Analise de performance
        - Performance das regras
        - Performance dos preprocessadores
        - Performance pacotes


10-) Output
         - Syslog
         - Unified 2

11-) Host Attribute Table
12-) Configurações Múltiplas
13-) Escrevendo e lendo regras para o Snort
         - Básico
            - Cabeçalho
            - Opções de Regra
         - Genericas
         - Payload
         - Non-Payload
         - Após detecção / Resposta Ativa

14-) Regras Shared Object
15-) PulledPork – Atualização de Regas
16-) Interface de Gerenciamento de Alertas / Dicas de analise de incidentes – Snorby
17-) Dicas finais

Total de praticamente 70h de gravação bem prática, com teoria e laboratorios.

Interessado entrar em contato spooker@gmail.com


Happy Detection!

Rodrigo Montoro!

domingo, 19 de julho de 2015

[Treinamento] - Venda gravação curso OSSEC HIDS (em português)

Caros,

Estou vendendo a gravação do treinamento de OSSEC realizado no primeiro semestre desse ano. O Curso é baseado na versão 2.8.1,  seguindo o manual de referência bem como na sua maioria com muita prática. Além de tudo, o curso é bem informal e vamos criando testes de acordo com pedido dos alunos. Grade do Curso (dividido em 13 aulas):






1. Entendo funcionamento OSSEC HIDS x NIDS
   1.1. Funcionalidades OSSEC
   1.2. Modos instalação
   1.3. Sistemas suportados
 

2. Instalando o OSSEC
   2.1. Requisitos
   2.2. Modos instalação Local / Agente / Servidor
   2.3. Replicando instalação
 

3. Configurações OSSEC
   3.1. Cliente e Servidor
   3.2. Alertas
   3.3. Regras
 

4. Decoders/Regras
   4.1. Entendendo os Decoders
   4.2. Entendendo as Regras
   4.3. Linkando decoders e regras
 

5. Sistema de Integridade e detecção de rootkits
   5.1. O que é um rootkit?
   5.2. Como funciona a detecção de rootkit do ossec
   5.3. Monitorando a integridade de seu sistema (HIMS)


6. Active Response
   6.1. Active Response disponíveis
   6.2. Configuração de Active Response
   6.3. Ferramentas Active Response
 

7.Usando interface web
   7.1. Instalando a interface web
   7.2. Analisando e pesquisando eventos
 
8. Integração básica Elastic Search / Kibana

Investimento: R$ 499,00

Interessado entrar em contato via comentário ou e-mail spooker@gmail.com

Happy Detection!

Rodrigo "Sp0oKeR" Montoro

quarta-feira, 1 de julho de 2015

TOP30 Emerging Threats (ET) Snort alerts e IP nos honeypots

Instalei em 3 sensores da honeynet o meu querido snort. Logicamente o Snort só detecta o que já conhece, visto que são regras de blacklist, mas acho interessante ter ele rodando em paralelo com os daemons.



Abaixo a lista das TOP30 regras que alertaram:

  8241 [**] [1:2017162:2] ET SCAN SipCLI VOIP Scan [**]
   5469 [**] [1:2402000:3709] ET DROP Dshield Block Listed Source group 1 [**]
   4309 [**] [1:2001219:19] ET SCAN Potential SSH Scan [**]
   2308 [**] [1:2011716:4] ET SCAN Sipvicious User-Agent Detected (friendly-scanner) [**]
   2179 [**] [1:2010935:2] ET POLICY Suspicious inbound to MSSQL port 1433 [**]
   2129 [**] [1:2010937:2] ET POLICY Suspicious inbound to mySQL port 3306 [**]
   1862 [**] [1:2008578:6] ET SCAN Sipvicious Scan [**]
   1162 [**] [1:2402001:3709] ET DROP Dshield Block Listed Source group 1 [**]
   1031 [**] [1:2500108:3603] ET COMPROMISED Known Compromised or Hostile Host Traffic TCP group 55 [**]
    624 [**] [1:2500132:3603] ET COMPROMISED Known Compromised or Hostile Host Traffic TCP group 67 [**]
    568 [**] [1:2400000:2488] ET DROP Spamhaus DROP Listed Traffic Inbound group 1 [**]
    280 [**] [1:2101411:12] GPL SNMP public access udp [**]
    249 [**] [1:2500028:3603] ET COMPROMISED Known Compromised or Hostile Host Traffic TCP group 15 [**]
    232 [**] [1:2500106:3603] ET COMPROMISED Known Compromised or Hostile Host Traffic TCP group 54 [**]
    220 [**] [1:2500066:3603] ET COMPROMISED Known Compromised or Hostile Host Traffic TCP group 34 [**]
    203 [**] [1:2403350:1829] ET CINS Active Threat Intelligence Poor Reputation IP TCP group 26 [**]
    125 [**] [1:2403346:1829] ET CINS Active Threat Intelligence Poor Reputation IP TCP group 24 [**]
    118 [**] [1:2500138:3603] ET COMPROMISED Known Compromised or Hostile Host Traffic TCP group 70 [**]
    105 [**] [1:2009699:1] ET VOIP REGISTER Message Flood UDP [**]
     92 [**] [1:2500022:3603] ET COMPROMISED Known Compromised or Hostile Host Traffic TCP group 12 [**]
     90 [**] [1:2101616:9] GPL DNS named version attempt [**]
     84 [**] [1:2500136:3603] ET COMPROMISED Known Compromised or Hostile Host Traffic TCP group 69 [**]
     84 [**] [1:2010936:2] ET POLICY Suspicious inbound to Oracle SQL port 1521 [**]
     73 [**] [1:2500100:3603] ET COMPROMISED Known Compromised or Hostile Host Traffic TCP group 51 [**]
     68 [**] [1:2500062:3603] ET COMPROMISED Known Compromised or Hostile Host Traffic TCP group 32 [**]
     52 [**] [1:2500102:3603] ET COMPROMISED Known Compromised or Hostile Host Traffic TCP group 52 [**]
     47 [**] [1:2403331:1829] ET CINS Active Threat Intelligence Poor Reputation IP UDP group 16 [**]
     45 [**] [1:2403333:1829] ET CINS Active Threat Intelligence Poor Reputation IP UDP group 17 [**]
     44 [**] [1:2500140:3603] ET COMPROMISED Known Compromised or Hostile Host Traffic TCP group 71 [**]
     43 [**] [1:2403324:1829] ET CINS Active Threat Intelligence Poor Reputation IP TCP group 13 [**]

TOP30 IP de origem que geraram essas regras:

   1343 43.255.189.38
   1063 61.240.144.66
    796 155.94.64.250
    767 23.92.80.90
    755 218.77.79.43
    648 23.92.80.27
    528 61.240.144.65
    438 61.240.144.64
    414 61.240.144.67
    369 61.160.224.130
    351 46.165.249.2
    351 185.94.111.1
    327 222.186.27.171
    326 61.160.224.128
    313 192.187.115.202
    289 188.138.1.239
    242 124.158.12.201
    235 23.92.80.95
    234 173.193.12.244
    233 188.227.186.16
    231 69.64.33.115
    227 46.165.210.84
    225 71.6.135.131
    220 62.210.71.22
    218 192.3.8.210
    215 94.102.49.168
    210 61.160.224.129
    207 23.92.80.97
    195 162.244.35.24
    189 222.186.21.133

Pretendo colocar sensores internos em redes reais, o que acredito que adicionará outros alertas, porém é válido ativar essas regras caso não as possua.

Ainda estou em fase de testes e pretendo num futuro compartilhar essas informações de forma automatica (API) ou site.

Happy Snorting!

Rodrigo "Sp0oKeR" Montoro