
Reconhecimento e Pwnage de Mainframes
por @singe (Dominic White @ SensePost)
BIRP é uma ferramenta que auxilia na avaliação de segurança de aplicações mainframe servidas através de TN3270. Assim como o BURP e outros proxies de aplicações web fazem para avaliações de aplicações web, o BIRP tem como objetivo fazer o mesmo para avaliações de aplicações TN3270. E, assim como acontece com aplicações web, ser capaz de ver e modificar campos que o desenvolvedor da aplicação assumiu que não eram visíveis nem modificáveis permite que premissas de segurança sejam contornadas.
Em particular, o BIRP fornece duas capacidades para o aspirante a hacker de TN3270. A primeira é que mostra todos os dados retornados pela aplicação na tela. Isto inclui campos ocultos. A segunda é que permite que campos marcados como "protegidos", também conhecidos como "não modificáveis", sejam modificados. Dependendo de como a aplicação foi desenvolvida, isto pode permitir que a funcionalidade da aplicação seja modificada.
Execute ./birp.py -h para obter ajuda de inicialização se quiser começar.
Tudo o que você precisa é especificar um alvo com -t. A especificação do alvo pode incluir uma porta com : depois do IP, por exemplo, 10.10.10.10:1023. Se nenhuma porta for especificada, o padrão será :23, conforme o comportamento padrão do x3270.
Você pode usar -l para carregar um arquivo de histórico previamente salvo no histórico. Infelizmente, você precisa sempre especificar um alvo e ainda não é possível visualizar apenas o histórico.
Verifique os pré-requisitos abaixo para instalar. Infelizmente, isso só funciona em ambientes Unix por enquanto, sem suporte para Windows.
Atualmente, o BIRP tem um conjunto de funcionalidades bastante limitado. São estas:
O modo interativo é o coração da funcionalidade do BIRP. Ele transmite teclas e outros comandos do BIRP para o x3270 e permite que o analista interaja com a aplicação como faria se estivesse usando o x3270 diretamente. No entanto, também exibe a "visão de hacker" anotada de cada tela retornada, bem como registra "transações" e as armazena no histórico do proxy para análise e inspeção posteriores.
No modo interativo, pressionar Ctrl-h imprime uma tela de ajuda, Ctrl-k exibe uma legenda de cores e ESC volta ao menu.
O BIRP tenta descobrir quando uma "transação" ocorreu e registra a tela antes e depois, assim como os campos modificados. Certas teclas normalmente garantem o início de uma transação, como Enter ou qualquer uma das teclas PF/PA. No entanto, se por qualquer motivo a tela exigir teclas diferentes para funcionar, você pode "forçar" manualmente uma transação com Ctrl-u logo após realizar a ação.
Por fim, se quiser que a tela seja reimpressa, pressione Ctrl-r.
Isso exibe o histórico de todas as transações que o BIRP registrou e permite que sejam inspecionadas. Especificamente, fornece acesso à tela submetida, aos campos que foram modificados nessa tela (ou seja, os dados submetidos) e à resposta.
Para cada tela, apenas a primeira linha é exibida como contexto, mas a tela completa pode ser impressa se você visualizar a transação.
Além disso, você pode entrar no python e examinar o objeto da tela diretamente.
Aqui você pode realizar uma pesquisa sensível a maiúsculas/minúsculas para encontrar transações com telas que contenham determinado texto.
Você pode salvar seu histórico em um arquivo e carregá-lo novamente mais tarde com a opção -l na linha de comando. Você precisa salvá-lo com um nome de arquivo único.
A ferramenta ainda não está concluída e, neste momento, existem muitas boas razões para poder brincar com os objetos diretamente. Você pode entrar em uma shell IPython incorporada em vários locais. O BIRP tem um conjunto bastante útil de objetos python que podem ser interrogados, e garanti que eles tenham uma saída pythonica útil (str/repr). O objeto de topo é o "history", que contém uma lista de "transactions". Você pode interrogar a última transação adicionada referindo-se a history.last(). Cada transação tem um objeto de tela de solicitação e de resposta. Assim, por exemplo, para obter uma lista de todos os campos ocultos na última resposta do servidor, você pode usar: history.last().response.hidden_fields
Para mais detalhes, o melhor é consultar o módulo tn3270.py.
Bibliotecas Python: py3270 (v0.3.4), colorama, IPython Elas podem ser instaladas com pip ou easy_install. Até o py3270 aceitar este pull request (https://github.com/py3270/py3270/pull/13), use a minha biblioteca py3270 (https://github.com/singe/py3270).
Cliente x3270 modificado (v3.6) Os patches estão incluídos. Você pode baixar o código-fonte em http://x3270.bgp.nu/download.html, depois cd para o diretório suite3270 após extrair, e patch -p1 < suite3270-full.patch Você pode usar um cliente não modificado, mas nesse caso não conseguirá editar campos protegidos. O patch faz duas alterações: a primeira é permitir que campos protegidos sejam editados; a outra é tornar os campos ocultos visíveis (mostrados com realce de texto invertido). Esta funcionalidade está dividida em dois outros patches, se por algum motivo você quiser apenas um ou outro.
A funcionalidade de manipulação de teclas que uso é a minha própria implementação personalizada de getch. É bastante horrível, mas funciona. Adoraria usar uma implementação de manipulação de teclas mais madura, como curses, pygame, urwid, etc., mas todas elas também querem assumir o controle da sua tela. Pessoalmente, considero o buffer de scrollback inestimável para registrar minhas atividades ou simplesmente para poder rolar para cima e lembrar o que fiz, por isso não queria perder isso, daí esta abordagem.
Achei o py3270 bastante cru e acabei por criar um wrapper para parte dele. Forneci isto como um wrapper separado que você pode usar nos seus próprios programas.
Por dominic () sensepost.com (@singe)
Big Iron Recon & Pwnage da SensePost está licenciado sob uma Licença Internacional Creative Commons Atribuição-CompartilhaIgual 4.0 (http://creativecommons.org/licenses/by-sa/4.0/) Permissões além do âmbito desta licença podem estar disponíveis em http://sensepost.com/contact us/.