
Um repositório para gerar e manter atualizadas automaticamente uma série de imagens Docker através do GitHub Actions.
RAUDI (Imagens Docker Atualizadas Regular e Automaticamente) gera automaticamente e mantém atualizada uma série de Imagens Docker por meio de GitHub Actions para ferramentas que não são fornecidas pelos desenvolvedores.
RAUDI é o que vai te salvar de criar e gerenciar muitas Imagens Docker manualmente. Toda vez que um software é atualizado, você precisa atualizar a Imagem Docker se quiser usar os recursos mais recentes, as dependências podem parar de funcionar.
Isso é confuso e demorado.
Não se preocupe mais, nós cuidamos disso.
Você pode tanto bifurcar (fork) este repositório e usar o Workflow do GitHub por conta própria, quanto usá-lo localmente (e gerenciar sua execução da forma que preferir).
Se você quiser bifurcar este repositório, também precisa definir alguns segredos (secrets) para conseguir enviar suas imagens para sua conta pessoal do Docker Hub. Dois segredos do GitHub devem ser configurados:
Após configurar esses segredos, você precisa editar a variável organization definida no arquivo tools/main.py, pois ela está configurada para enviar para o Docker Hub da SecSI.
É isso aí, pessoal: vá em Action, ative-a para o seu repositório bifurcado, espere até meia-noite, e o Workflow fará o trabalho pesado!
Este repositório também pode ser executado localmente. Os requisitos a serem atendidos são os seguintes:
Aqui está a documentação para trabalhar com BuildX: https://docs.docker.com/buildx/working-with-buildx/
A fase de configuração é bastante direta; você só precisa dos seguintes comandos:
git clone https://github.com/cybersecsi/RAUDI
cd RAUDI
pip install -r requirements.txt
Você está pronto para começar!
Para executar o teste, você precisa instalar o pytest com o comando pip install pytest (não está em requirements.txt pois é necessário apenas para fins de teste) e então pode executar:
pytest -s
ou
python -m pytest -s
para rodar os testes.
RAUDI pode construir e enviar todas as ferramentas colocadas no diretório tools. Existem diferentes opções que podem ser usadas ao executá-lo. Antes de usá-lo localmente, você deve criar um arquivo .env (você pode simplesmente copiar o arquivo .env.sample) e adicionar seu Token de Acesso Pessoal do GitHub para evitar Limitação de Taxa (Rate Limiting). Para usuários não autenticados, o GitHub permite até 60 requisições por hora, enquanto usuários autenticados podem fazer até 15.000 requisições por hora. Por isso, recomendamos que você o adicione! Você também pode criar um token de acesso pessoal sem nenhum escopo, pois tudo o que fazemos é ler algumas informações de cada repositório do GitHub.
Neste modo, o RAUDI tenta construir todas as ferramentas, se necessário. O comando para executá-lo é simplesmente:
python3 ./raudi.py --all
Neste modo, o RAUDI tenta construir apenas a ferramenta especificada. O comando neste caso é:
python3 ./raudi.py --single <nome_da_ferramenta>
<nome_da_ferramenta> DEVE ser o nome do diretório dentro da pasta tools.
Como o parâmetro tests foi adicionado à estrutura de configuração da ferramenta, pode ser útil testar se os comandos inseridos retornam um código de status 0. O comando para testar uma ferramenta específica é:
python3 ./raudi.py --test <nome_da_ferramenta>
<nome_da_ferramenta> DEVE ser o nome do diretório dentro da pasta tools.
Se você quiser saber as ferramentas disponíveis, pode executar este comando:
python3 ./raudi.py --list
Se você quiser adicionar rapidamente uma nova pasta de ferramenta a partir de um dos templates disponíveis, pode executar este comando:
python3 ./raudi.py --bootstrap <novo_nome_da_ferramenta>
| Opção | Descrição | Valor Padrão |
|---|---|---|
| --push | Se deve enviar automaticamente para o Docker Hub | False |
| --remote | Se deve verificar no Docker Hub em vez do Docker local antes de construir | False |
Esta é a lista atual de ferramentas que foram adicionadas. Todas são ferramentas que não possuem uma Imagem Docker oficial fornecida pelo desenvolvedor:
Cada ferramenta no diretório tools contém pelo menos dois arquivos:
Se você quiser adicionar uma nova ferramenta, basta criar uma pasta para essa ferramenta específica dentro do diretório tools. Nesta pasta, você deve inserir o Dockerfile com build args definidos para personalizar e automatizar a construção. Depois de criar o Dockerfile, você precisa criar um config.py no mesmo diretório com uma função chamada get_config(organization, common_args). Atenção: a função DEVE ser chamada dessa forma e DEVE ter esses dois parâmetros (mesmo que você não os utilize). O valor retornado é a config para essa ferramenta específica e possui a seguinte estrutura:
config = {
'name': organization+'/<nome_da_imagem>',
'version': '', # Deve ser uma função auxiliar
'buildargs': {
},
'tests': []
}
As quatro chaves são:
Depois de fazer isso, você está pronto! Apenas tome cuidado para que o nome da ferramenta SEJA O MESMO que o diretório onde você colocou o Dockerfile.
Há uma CONVENÇÃO DE NOMENCLATURA para as versões: use apenas PONTOS e DÍGITOS; portanto, remova qualquer 'v' inicial da versão no config.py específico (para um exemplo funcional, veja tools/dirsearch/config.py).
Para obter as versões mais recentes e informações sobre ferramentas e imagens base, um conjunto de auxiliares foi implementado. Se você quiser adicionar uma nova ferramenta, deve usar esses auxiliares para ter uma Imagem Docker que seja atualizada automaticamente pelo RAUDI.
get_latest_pip_versionEste auxiliar é usado para obter a versão mais recente de um pacote pip. Basta informar o nome do pacote e ele retorna o número da versão. Exemplo:
VERSION = helper.get_latest_pip_version(package_name)
get_latest_npm_registry_versionEste auxiliar é usado para obter a versão mais recente de um pacote npm. Basta informar o nome do pacote e ele retorna o número da versão. Exemplo:
VERSION = helper.get_latest_npm_registry_version(package_name)
get_latest_github_releaseEste auxiliar é usado para obter informações sobre um repositório do GitHub que usa Releases e possui vários tipos de assets (ex.: executáveis para diferentes SOs). Este auxiliar recebe o repositório (no formato user/repo) e uma string alvo para identificar o asset correto a ser baixado. Ele retorna um dicionário com duas chaves (url e version). Exemplo:
VERSION = helper.get_latest_github_release("user/repo", "linux_amd64")
get_latest_github_release_no_browser_downloadEste auxiliar é usado para obter informações sobre um repositório do GitHub que usa Releases e possui apenas o código-fonte (o que significa que há um zipball e um tarball). Este auxiliar recebe o repositório (no formato user/repo) e retorna um dicionário com duas chaves (url e version). Exemplo:
VERSION = helper.get_latest_github_release_no_browser_download("user/repo")
get_latest_github_tag_no_browser_downloadEste auxiliar é usado para obter informações sobre um repositório do GitHub que usa Tags e possui apenas o código-fonte (o que significa que há um zipball e um tarball). Este auxiliar recebe o repositório (no formato user/repo) e retorna um dicionário com duas chaves (url e version). Exemplo:
VERSION = helper.get_latest_github_tag_no_browser_download("user/repo")
get_latest_github_commitEste auxiliar é usado para obter informações sobre um repositório do GitHub que não usa Tags ou Releases. Neste caso, o objetivo é obter o último commit. Este auxiliar recebe o repositório (no formato user/repo) e retorna uma string representando a data do último commit no formato YYYYMMDD.
VERSION = helper.get_latest_github_commit("user/repo")
Esta seção fornece exemplos para as Ferramentas de Segurança de Rede atualmente adicionadas. Como você pode ver, as imagens fornecem apenas a ferramenta, portanto, se precisar usar uma wordlist, você precisa montá-la.
docker run -it --rm secsi/<ferramenta> <comando>
docker run -it --rm -v <diretório_wordlist_origem>:<diretório_wordlist_container> secsi/dirb <url> <diretório_wordlist_container>/<arquivo_wordlist>
Nós somos italianos, então provavelmente pronunciamos de forma diferente da sua. A pronúncia correta (usando a transcrição fonética) é a seguinte:
/ˈraʊdi/
Caso contrário, pense no cachorro empalhado do famoso programa de TV Scrubs: Rowdy
Todos estão convidados a contribuir! Criamos um documento muito detalhado descrevendo como contribuir com o RAUDI.
O RAUDI é orgulhosamente desenvolvido @SecSI por:
Outros contribuidores:
RAUDI é um software livre e de código aberto lançado sob a GNU GPL v3.
| --force | Se deve construir ou não se uma imagem com o mesmo nome de tag foi encontrada | False |
| Nome | Imagem Docker | Fonte (Source) |
|---|