sexta-feira, 17 de maio de 2013

Conviso presente no CIAB 2013: Espaço Inovação


Foram anunciadas as empresas Brasileiras que estarão presentes no Espaço Inovação do CIAB. Com muita honra (e trabalho árduo por anos), a  Conviso foi uma das empresas escolhidas para expor sua ferramenta de Gestão de Risco, o Conviso Security Compliance (CSC).

O Espaço Inovação é uma iniciativa do Instituto de Tecnologia de Software e Serviços (ITS) para a promoção da inovação nas empresas brasileiras de pequeno e médio porte. O ITS atua junto das mais importantes exposições setoriais de TI e Telecomunicações do país, expondo por meio de um estande coletivo soluções inovadoras e criteriosamente selecionadas. No setor de Finanças e Bancos, acontece anualmente o Espaço Inovação no CIAB FEBRABAN, uma parceria que se iniciou em 2005. Já na área de telecomunicações, acontece o Espaço Inovação  no mesmo formato de estande coletivo, é realizado na FUTURECOM. Atualmente também se estabelecem negociações para expandir o modelo para outros setores como saúde e acessibilidade . No Espaço Inovação a análise do mérito da solução precede a seleção, tornando as empresas expositoras merecedoras do destaque. As inscrições são feitas com antecedência de três meses da exposição e submetidas a analise de um comitê de especialistas. São as soluções e não a empresa o foco da seleção. Durante a avaliação são considerados os aspectos de tecnologia, negócios e impactos no setor.

No Conviso Security Compliance (CSC) você poderá customizar relatórios, integrar informações de diferentes fornecedores, gerenciamento centralizado, acompanhamento de correção e delegação de tarefas paras as falhas encontradas, seguindo as melhores práticas. Junto com a interface de Gestão, o Conviso Security Compliance possui módulos auxiliares que garantem um ciclo completo de proteção e Gestão de forma simplificada e eficaz.

Conviso Security Compliance

  • Análise de Risco: suporta as análises de risco e conformidade recebendo dados externos e com seus recursos como o scanner Accuracy e o Conviso Intelligence fornecendo base de conhecimento para Testes de invasão; Auditoria de Código; Modelagem de ameaças.
  • Gestão de Risco: gerencie o tratamento das vulnerabilidades identificadas nas análises, definindo um plano de ação com os responsáveis e as respectivas datas. Informação útil para gestão e auditorias.
  • Aplicar Controles: Utilizando a base de conhecimento do Conviso Intelligence ou a solução de hardening e baselines do Conviso Armature.
  • Métricas: acompanhe a evolução e melhoria contínua do tratamento das vulnerabilidades a partir de métricas e um dashboard customizável.

Quer conhecer melhor a ferramenta? Requisite uma demonstração https://www.conviso.com.br/produtos.php

Esperamos encontrá-los no CIAB.

segunda-feira, 6 de maio de 2013

Hackeando o post "Hacking com controle remoto da sua TV"

Ocorreu uma discussão extremamente interessante sobre o artigo anterior  que escrevi, chamado "Hacking com controle remoto da sua TV". No post apresentei um código com a funcionalidade de mapear teclas de um controle remoto e esse código teria uma possível vulnerabilidade na função “serialread()”.

No seguinte código, não temos limitação para escrita na variável “buf” e dependendo de alguns fatos isso poderia resultar em um stack buffer overflow.

Embora seja visível um possível Buffer Overflow, precisamos ter uma prova de conceito. A
entrada vem de uma comunicação “serial” e isso seria um problema para testar nossos “payloads”. Uma opção seria programar um “fuzzer” no arduino, assim como na imagem abaixo.
O exemplo acima envia uma sequência crescente de caracteres 'A', mas no nosso caso, enviando uma “string” única longa já demonstra o problema de corrupção de memória.
 Compilando o código com adição do argumento “-g” e “-fno-stack-protector”, depois rodando com GDB, podemos ver os seguintes detalhes.

Ao enviar uma string contendo 64 letras 'A' concatenadas com 10 letras 'B', temos então um crash.  Ao ver o valor de “fd”, vamos notar seu valor ser “66” ao invés de “8”. Podemos ver
que foi possível mudar o valor de “fd”, entretanto isso não é o suficiente para conseguir execução de código. Logo de forma conseguir mais informações, resolvi testar com a ferramenta “pmcma”.
( https://github.com/toucan-system/pmcma )
 Embora seja evidente o problema, não pareceu ser explorável, mesmo podendo escrever no  endereço de retorno da função “main()” , não foi possível fazer algo por conta da função “exit()”.

De forma mitigar o ocorrido, podemos seguir o seguinte exemplo para limitar o buffer no código:






Código teve adição da variável “max”, trabalhando em conjunto com variável “ i ”, para contar a leitura dos elementos do buffer, só então limitar o loop até o valor da variável “max”.

Então podemos chamar a função da seguinte forma “serialread(fd,buffer,’\n’ ,62);”, repare o último argumento, variável “max”, este valor seria responsável para definir o limite no buffer, fazendo lembrar funções do OpenBSD como strlcpy() e strlcat(),  que também  necessitam do tamanho do buffer para limitação.

Exemplo de um “Overflow”

Talvez poder escrever um valor em uma variável não pareça tão útil no nosso caso, entretanto em alguns casos pode nos levar para algum graal, tenha em mente um sistema  qualquer,em um cenário bem menor, onde temos seguinte código:



Embora seja teoricamente impossível fazer o programa mostrar a mensagem “Welcome to MaTriX Ne0 !”, pelo simples fato de não ter nada na variável “auth”, notamos a variável “login
recebendo um valor que não foi limitado, logo se o valor ultrapassar 12 caracteres podemos ter problemas.

Explorando essa vulnerabilidade entorno da variável “login”, logo acabamos escrevendo na variável “auth” qualquer valor, isso ocorre pois a pilha(stack) cresce ao contrário.
 

Além de fazer isso, seria interessante  ver se foi escrito algo na “EIP”(instruction pointer),se sim tentar algo como “ret2libc”.



Conclusão

Concluímos então, que até mesmo entradas via serial podem ser suscetíveis a alguma vulnerabilidade, por este fato todas entradas de dados devem ser limitadas para evitar problemas de corrupção de memória.

quinta-feira, 2 de maio de 2013

Novos desafios, agora Gerente de Produtos.

Esse será meu primeiro blogpost, de vários que farei futuramente. Como fomos ensinados pelos nossos pais, iniciarei no blog apresentando meu perfil, bem como meu novo trabalho na Conviso.

Meu nome é Rodrigo Montoro, mais conhecido por Sp0oKeR ou @spookerlabs no twitter. Sou um apaixonado por TI, Segurança da informação e em especial pelo Open Source, onde tudo começou em 1996/1997 com meu primeiro Slackware em alguns disquetes ( alguns talvez nunca tenham usado um disquete).

A partir dali, minha curiosidade sempre cresceu e algo que vejo como muito legal no opensource, especialmente naquela época onde não se havia tantas documentações, era entender como as coisas funcionam.

Resumindo meu caminho de 1997 até o presente momento, trabalhei como Network admin por muito tempo em provedores (o que me fez ser um apaixonado por protocolos e defesas), já fui Pré-Vendas e nos últimos anos me dedicava a área de pesquisas, onde duas delas são patentes requeridas nos EUA (caso queira saber mais fique a vontade para entrar em contato).

Nunca fui um ótimo palestrante/orador, mas com as iniciativas de comunidade opensource, pesquisas, vi a na necessidade de apresentar feitos e estudos, o que me deu enorme prazer de palestrar em inúmeras conferência no Brasil (FISL, Conisli, Latinoware, CNASI, Secure Brasil, H2HC, OWASP AppSec, BSides, Silver Bullet) e fora do pais (EUA - Source Boston & Seattle, Toorcon San Diego, ZonCon (conferência interna da Amazon), Bsides Las Vegas, SecTor em Toronto (Canadá)), no qual acredito ter melhorado minhas técnicas, porém muito ainda por vir.

No meu tempo livre, quem me acompanha sabe que sou um alucinado por esportes, especialmente as provas de longa duração, conhecidas como Endurance. No ano de 2012 fiz uma prova conhecida como Ironman, que é um triathlon com 3800m de natação, 180 km de bicicleta e 42 km de corrida, na sequência com limite de 17h para finalizar. O que me surpreendeu treinando para essa prova em especial e que me motiva no meu dia a dia, foi aprendizados e disciplinas que carrego para meu lado profissional.


* Foto durante pedal da prova, diversão garantida, mesmo sofrendo

Em meios a tantos fatos, anos se  passaram e sempre mantive uma amizade com o Wagner Elias. Por final, decidi que gostaria de migrar de área. Conversei com vários amigos, familia, pesquisei sobre diferentes cargos, maioria não tão técnicos como meu trabalho de pesquisa e cheguei a conclusão que Gerente de Produtos era o que eu procurava para meu futuro.

Por coincidência, o Wagner me fez uma oferta justamente para assumir esse cargo na empresa, o que não tive muitas dúvidas em aceitar, pois essa mudança de área, novos desafios era exatamente o que queria e precisava.

Dai a grande pergunta, o que é um Gerente de Produtos ( ou Product Manager) ?

O Gerente de Produtos foca no produto em si, mas precisa se envolver em todas as áreas relacionadas como: desenvolvimento, implementação, atendimento, marketing e vendas. Ele não é o responsável por nenhuma dessas áreas, porém precisa preencher as lacunas, onde elas existirem. Podemos dizer que é um conjunto de técnico com parte pessoal, lidando muito com clientes, entendendo a demanda e sabendo priorizar as novas funcionalidades.

O desenvolvimento de um novo produto é um ciclo continuo, podemos dizer um looping infinito, onde a cada release priorizaremos as maiores necessidades e melhorias, mas nunca deixando idéias sem serem feitas. Logicamente nem precisaria salientar, mas temos as melhorias indiretas que sempre sairão como pequenos bug fix e segurança (esse sempre com grande prioridade).

Porque a Conviso quer um Gerente de Produtos ?

Buscando facilitar a vida dos clientes, bem como levar um produto diferenciado para os clientes, a Conviso possui o Conviso Security Compliance (CSC) no qual você poderá entender melhor e requisitar uma demonstração em https://www.conviso.com.br/produtos.php

Lembrando que o produto terá um grande foco e novas funcionalidades  serão anunciadas em breve.

Para finalizar uma celebre frase que gosto muito: “Insanidade é continuar fazendo sempre a mesma coisa e esperar resultados diferentes”. – Albert Einsten

Que venham as inovações e desafios.

Por final, agradecer a oportunidade e espero em breve contar novidades do produto, bem como ter você como cliente.