Como usar o Git para clonar, compilar e refinar ferramentas hackers
Autor: F. J.A. | Publicado: 2017-08-23T19:32:00-07:00

Já estamos na metade da série de como configurar um MAC para hackear, é hora de começar a configurar nossa caixa de ferramentas. Nossa primeira ferramentas é o Git, que será usado em futuros tutoriais.

O Git é atualmente o sistema de controle de versão mais utilizado (VCS) no mundo, principalmente devido ao GitHub. Os sistemas de controle de versão registram alterações em um arquivo ou conjunto de arquivos ao longo do tempo para que você possa recuperar versões específicas mais tarde. O Git é uma forma distribuída de controle de versão, onde cada sistema, não apenas uma localização central, possui um repositório completo.

Os projetos hospedados no GitHub, ou seus próprios repositórios remotos pessoais, são totalmente espelhados quando são clonados. Isso significa que, quando você faz um pull down de um repositório, você obtém todos os arquivos que estão neste repositório, você pode fazer alterações e confirmá-los de volta ao seu próprio Fork do projeto, clonar versões diferentes ou simplesmente clonar e compilar. Você pode até enviar suas mudanças para o projeto principal.

Muitos projetos de código aberto dependem do GitHub, o kernel do Linux é um exemplo. Muitas ferramentas populares de hacking também hospedam suas fontes no GitHub. Se você ainda não possui uma conta, você deve criar uma.



O Git está integrado ao Mac OS, então não teremos que baixar nada. Eu estarei cobrindo o básico do básico neste artigo, apenas o suficiente para nos deixar por dentro do processo quando formos modificar algum código e manter nossos próprios repositórios locais. Ao usar o Git, poderemos clonar as ferramentas populares de hacking de código aberto, compilá-las e até mesmo fazer alterações ou corrigir bugs!



Passo 1 - Clonar algum código fonte (git clone)



Vamos usar o comando git clone para extrair a fonte do GitHub. Provavelmente é o comando mais comum que você usará como pentester, a menos que você também faça desenvolvimento de sistemas. Para usar este comando, basta encontrar um repo (eu selecionei &nbsp;TheHarvester) e executar o seguinte comando, trocando o repo que escolhi com o que você escolheu.




git clone&nbsp;https://github.com/laramies/theHarvester











Agora tenho uma cópia do TheHarvester para uso próprio. No entanto, falta uma dependência necessária - a biblioteca de solicitações do Python. Uma vez que estamos lidando com o código-fonte ao clonar o GitHub, é comum que as dependências não sejam atendidas. Se estivéssemos puxando isso de um gerenciador de pacotes, como Homebrew, o pacote incluiria as dependências. Neste caso, eu simplesmente preciso instalar pip (um gerenciador de pacotes para bibliotecas Python) e retirar as dependências apropriadas.



Passo 2 - Inicie um novo repositório




git init


Quando você inicia um novo repositório, o Git cria um pasta .git que rastreia as mudanças em seu projeto.




Passo 3 - Adicionar arquivos rastreáveis (git add)




git add *


Agora qualquer arquivo que você modificar será rastreado pelo Git nesta pasta.




Passo 4 - Comitar o código (git commit)



Uma vez que eu estou satisfeito com o estado em que meus arquivos estão. Vou comitar as mudanças usando o comando:




git commit -a -m 'modificando variável x'


O comando está dizendo ao Git que as modificações feitas nos arquivos estão prontas para serem salvas. A flag -a indica ao Git para comitar todos os arquivos atualmente rastreados, enquanto o sinalizador -m é a mensagem a incluir com essas mudanças.




Passo 5 - Veja o status do seu repositório




Às vezes, deixamos projetos de lado por um longo período de tempo, e outras vezes é difícil acompanhar o que está acontecendo. Felizmente, podemos descobrir o status do repositório com:




git status









Eu tenho usado o comando através de todas as etapas do meu repositório para mostrar o que o Git está fazendo nos bastidores. Este comando mostra os arquivos não rastreados, arquivos que mudaram, mas não se comprometeram, e meu Branch de trabalho.




Passo 6 - Adicione e teste os novos recursos (git branch)



Os Branchs permitem que você adicione ou teste novos recursos sem fazer alterações na base do código estável. Por exemplo, meu packages.config foi comitado e atualmente está estável, mas eu quero adicionar alguns novos recursos experimentais sem quebrar nada na versão estável. Nesse caso, eu usaria o comando:




git branch experimental


Este comando criaria um novo branch do projeto, depois eu mudaria para o o branch experimental com o comando:





git checkout experimental


Agora que eu tenho um novo branch, vou adicionar meus recursos experimentais, &nbsp;fazer "funcionar" e comitar as mudanças no branch. Se eu estivesse trabalhando com uma equipe, seria existir vários branchs da versão estável - um branch para novos elementos de UI, outro com correções de bugs, e talvez outro branch onde algumas funcionalidades novas estão sendo adicionadas.&nbsp;




Passo 7 - Fazer o merge do código no branch master (git merge)



Se tudo deu certo com as mudanças é hora de adicionar esses arquivos no branch master:




git checkout master


A seguir vou fazer o merge do meu branch experimental com o branch master:



git merge experimental


Agora, o branch principal contém as novas mudanças de código não experimentais. Sempre podemos voltar e verificar o branch experimental e continuar adicionando novos recursos, ou criar novos branchs.




Esta é uma introdução muito básica para trabalhar com o Git. Existem muitos recursos poderosos que eu não abordei aqui. Eu só passei o que é necessário para trabalhar com seus próprios repositórios locais em sua máquina. O Git é capaz de muito mais, especialmente quando usado em conjunto com o GitHub.



Enquanto alguns de vocês podem não usar esses recursos, é importante saber que eles estão lá. Há momentos em pen testes onde você terá que modificar um PoC (prova de conceito) ou obter um código no seu sistema.&nbsp;





Próximo:&nbsp;Configurando o Homebrew, um gerenciador de pacotes