<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Fernando Guisso</title>
    <description>The latest articles on DEV Community by Fernando Guisso (@fguisso).</description>
    <link>https://dev.to/fguisso</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F337051%2F08cad79f-f038-4d2b-9934-6ae09c5042b1.jpg</url>
      <title>DEV Community: Fernando Guisso</title>
      <link>https://dev.to/fguisso</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fguisso"/>
    <language>en</language>
    <item>
      <title>Proxmox e Homelab</title>
      <dc:creator>Fernando Guisso</dc:creator>
      <pubDate>Sat, 17 Aug 2024 13:42:45 +0000</pubDate>
      <link>https://dev.to/fguisso/proxmox-e-homelab-11fa</link>
      <guid>https://dev.to/fguisso/proxmox-e-homelab-11fa</guid>
      <description>&lt;h3&gt;
  
  
  Proxmox e Homelab: Como Transformei um Mini PC em um Servidor de Respeito
&lt;/h3&gt;

&lt;p&gt;Recentemente, tive a oportunidade de apresentar no Debian Day Natal 2024, onde compartilhei minha jornada de transformar um mini PC, adquirido no AliExpress, em um servidor de homelab completo. Utilizando o Proxmox, um sistema operacional baseado em Debian, consegui configurar uma série de serviços que facilitam tanto minha vida pessoal quanto profissional. Se você é um entusiasta de software livre e quer explorar as possibilidades de um homelab, este artigo é para você.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;O Que É Proxmox e Por Que Usá-lo?&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Na minha palestra, comecei explicando o que é o &lt;a href="https://www.proxmox.com/en/downloads" rel="noopener noreferrer"&gt;Proxmox&lt;/a&gt;. Para quem não está familiarizado, Proxmox é uma plataforma de virtualização baseada em Debian que permite a criação e gestão de containers e máquinas virtuais de maneira simples e eficiente. Sua instalação é direta e oferece uma interface web poderosa, acessível até pelo celular.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Meu Homelab e Hardware Utilizado&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Para este projeto, utilizei um mini PC com o seguinte hardware:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Processador:&lt;/strong&gt; AMD Ryzen 5 5600H&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memória:&lt;/strong&gt; 16GB RAM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Armazenamento:&lt;/strong&gt; 500GB SSD&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se você estiver interessado, pode encontrar esse mini PC no &lt;a href="https://pt.aliexpress.com/item/1005003443853901.html?spm=a2g0o.order_list.order_list_main.187.4d3ecaa4Qh7Z9i&amp;amp;gatewayAdapt=glo2bra" rel="noopener noreferrer"&gt;AliExpress&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Este setup me permitiu rodar vários serviços em containers e VMs, atendendo minhas necessidades com folga. No entanto, se você procura uma solução mais compacta e acessível, pode considerar utilizar um Raspberry Pi com o &lt;a href="https://github.com/pimox/pimox7" rel="noopener noreferrer"&gt;Pimox&lt;/a&gt;, que traz as funcionalidades do Proxmox para o hardware do Raspberry.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Meu Homelab e Tailscale&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Uso o Proxmox como base para meu homelab, onde rodo vários serviços que posso acessar de qualquer lugar. Para simplificar o acesso remoto, utilizo o Tailscale, uma solução VPN que torna a conexão segura e fácil de configurar em diferentes dispositivos. Durante a demonstração, usei meu celular para mostrar o Proxmox Web, explicando como gerencio containers e VMs.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Serviços que Transformam o Homelab&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;1. AdGuard:&lt;/strong&gt; O primeiro serviço que apresentei foi o &lt;a href="https://tteck.github.io/Proxmox/#adguard-home-lxc" rel="noopener noreferrer"&gt;AdGuard&lt;/a&gt;. Trata-se de um bloqueador de anúncios e rastreamento que protege toda a rede. Além disso, mostrei como utilizo o recurso de “rewrite” de regras para criar meus próprios domínios locais, como &lt;code&gt;pve.pandora:8006&lt;/code&gt; e &lt;code&gt;photoprism.pandora:80&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Paperlessngx:&lt;/strong&gt; Este é o serviço que utilizo para digitalizar e organizar documentos como notas fiscais e documentos pessoais. O &lt;a href="https://tteck.github.io/Proxmox/#paperless-ngx-lxc" rel="noopener noreferrer"&gt;Paperlessngx&lt;/a&gt; elimina a necessidade de manter pilhas de papel, permitindo um gerenciamento eficiente e acessível dos meus documentos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Photoprism:&lt;/strong&gt; O &lt;a href="https://tteck.github.io/Proxmox/#photoprism-lxc" rel="noopener noreferrer"&gt;Photoprism&lt;/a&gt; é meu gerenciador de fotos inteligente. Mesmo em um hardware limitado, ele é capaz de realizar buscas por rostos e indexar todas as minhas fotos e vídeos. Isso torna a organização e a busca de imagens extremamente fácil e eficiente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. VSCode Web:&lt;/strong&gt; Por fim, apresentei o &lt;a href="https://tteck.github.io/Proxmox/#vs-code-server" rel="noopener noreferrer"&gt;VSCode Web&lt;/a&gt;. Com ele, posso programar remotamente, utilizando apenas um tablet ou celular, além de executar comandos de terminal diretamente no servidor. Isso facilita muito o desenvolvimento, especialmente quando preciso compilar e testar códigos rapidamente.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Automatizando com tteck e Expansões Futuras&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Para facilitar ainda mais, finalizei mostrando a lista de scripts automatizados do &lt;a href="https://tteck.github.io/Proxmox" rel="noopener noreferrer"&gt;tteck&lt;/a&gt;, que permitem a criação rápida de diversos serviços no Proxmox. Embora não tenha mencionado durante a palestra, também vale a pena explorar outras ferramentas que podem ser integradas ao seu homelab, como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://tteck.github.io/Proxmox/#nextcloud-lxc" rel="noopener noreferrer"&gt;Nextcloud&lt;/a&gt;:&lt;/strong&gt; Uma excelente solução para armazenamento e sincronização de arquivos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://tteck.github.io/Proxmox/#nginx-proxy-manager-lxc" rel="noopener noreferrer"&gt;Nginx Proxy Manager&lt;/a&gt;:&lt;/strong&gt; Para gerenciar proxies reversos de maneira fácil e intuitiva.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://tteck.github.io/Proxmox/#jellyfin-media-server-lxc" rel="noopener noreferrer"&gt;Jellyfin Media Server&lt;/a&gt;:&lt;/strong&gt; Uma solução open-source para streaming de mídia.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://tteck.github.io/Proxmox/#vaultwarden-lxc" rel="noopener noreferrer"&gt;Vaultwarden&lt;/a&gt;:&lt;/strong&gt; Um gerenciador de senhas seguro e eficiente.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Espero que este artigo inspire você a explorar o mundo dos homelabs. Com um pouco de criatividade e as ferramentas certas, as possibilidades são infinitas!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Basic Recon Automation Using Github Actions</title>
      <dc:creator>Fernando Guisso</dc:creator>
      <pubDate>Wed, 16 Mar 2022 03:00:46 +0000</pubDate>
      <link>https://dev.to/fguisso/basic-recon-automation-using-github-actions-fnb</link>
      <guid>https://dev.to/fguisso/basic-recon-automation-using-github-actions-fnb</guid>
      <description>&lt;p&gt;Currently, the number of companies using CI (Continuous Integration) and CD (Continuous Deploy) solutions to automate the software lifecycle process (SLD) is growing. The most used tools are Jenkins, Github Actions, Gitlab CI, and so on. These tools bring the ease of automating software testing, code linters, creating releases, and final versions of the software.&lt;/p&gt;

&lt;p&gt;In the security world, some companies are also already implementing static security testing (SAST) and compromised software composition testing (SCA). With each addition of code or feature, the software can now be tested before going into production.&lt;/p&gt;

&lt;p&gt;The idea of working with security tools in CI/CD goes beyond the fact of automating tasks, but also of bringing the culture of information security to the teams of developers and infrastructure teams, the famous culture of DevSecOps. Very important at the moment we go through where development teams are scaling absurdly and we don’t have security experts to accompany these teams.&lt;/p&gt;

&lt;p&gt;Link for the projects repository: &lt;a href="https://github.com/fguisso/ga-recon" rel="noopener noreferrer"&gt;https://github.com/fguisso/ga-recon&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Use cases beyond static tests (SAST and SCA)
&lt;/h2&gt;

&lt;p&gt;The simplest use case we can address is dynamic security tests scheduled to take place periodically, taking into account that the application is already in production.&lt;/p&gt;

&lt;p&gt;Other interesting cases would be the possibility of Red Team teams, taking advantage of the event notifications of a pipeline, to launch automated tests as soon as the development of a new feature begins. I will address this topic in more depth in another article.&lt;/p&gt;

&lt;p&gt;What we will explore more in this article is the recognition of applications already in production, where we will point a domain to our CI that will periodically run some recognition tools, which can be used later by security teams for future security analyses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Github and Github Actions
&lt;/h2&gt;

&lt;p&gt;We are going to use Github to version and store our project, so go to github.com and create a new repository. Now let’s create and edit some files, if you don’t know how Github works, you can use the graphical interface. Github Actions is already an enabled Github service, just put the pipeline configuration files in a folder called &lt;code&gt;.github/workflows&lt;/code&gt; and all interactions and logs of this pipeline will be visible in the actions tab.&lt;/p&gt;

&lt;p&gt;To facilitate the creation of pipelines, Github Actions offers Actions, which are sets of configurations and installations ready for you to use in your pipeline, without you having to worry about it. Some official Actions are available on the Github Marketplace, however, you can directly use any Action that is a repository on Github.&lt;/p&gt;

&lt;p&gt;Learn more about Actions &lt;a href="https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions" rel="noopener noreferrer"&gt;here&lt;/a&gt; and the &lt;a href="https://github.com/marketplace?type=actions" rel="noopener noreferrer"&gt;link&lt;/a&gt; to the marketplace.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoh76jplg5cx47x7ivl4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoh76jplg5cx47x7ivl4.png" alt="image" width="406" height="307"&gt;&lt;/a&gt;&lt;em&gt;Examples of separate workflow files.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypt82hisf3u76t0v2mw6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypt82hisf3u76t0v2mw6.png" alt="image" width="709" height="227"&gt;&lt;/a&gt;&lt;em&gt;Github Actions resource tab with configured workflows.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Amass Action
&lt;/h3&gt;

&lt;p&gt;Amass according to its official documentation:&lt;/p&gt;

&lt;p&gt;The OWASP Amass project performs attack surface network mapping and external asset discovery using open-source intelligence gathering and active reconnaissance techniques.&lt;/p&gt;

&lt;p&gt;Amass is a very powerful tool that provides us with functions for the recognition and also for the management of the collected information. In our case, we are going to use the Amass Action just to enumerate a domain and bring the result in a txt file for later use.&lt;/p&gt;

&lt;p&gt;In your repository create a file called &lt;code&gt;amass.yml&lt;/code&gt; inside the &lt;code&gt;.github/workflows&lt;/code&gt; folder and add these settings and let’s analyze what we are doing line by line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;🔎 Recon&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;recon&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-go@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;go-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.17&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Amass - Enumeration&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fguisso/amass-action@main&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;domains&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;owasp.org&lt;/span&gt;
          &lt;span class="na"&gt;brute&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
          &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;hosts.txt&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;GitHub Workflow artifacts&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/upload-artifact@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;hosts.txt&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;hosts.txt&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: .yml/.yaml files are heavily indented, so the tabs and spaces within the file must be correct to avoid errors. You can use Github itself to validate your file or use a linter of YAML files.&lt;/p&gt;

&lt;p&gt;On the first line &lt;code&gt;name:&lt;/code&gt; ​​is just an identifier for your pipeline to be easily found within the Actions tab of Github.&lt;/p&gt;

&lt;p&gt;After &lt;code&gt;on:&lt;/code&gt; is where we can automate so that the workflow starts according to some programmed event, which can be triggered by one or more events, at the moment we choose &lt;code&gt;workflow_dispatch:&lt;/code&gt; so that it is available in the Actions dashboard and we can activate any time. Towards the end, we will see how to trigger this workflow scheduled to run once a week, but you can also trigger it using Git events like trigger whenever there is a Pull Request in the development branch, trigger only when a Merge from the main branch happens.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;jobs:&lt;/code&gt; is where we can separate Actions to run in parallel, as we are using the Free version of Github Actions, we will try to always keep just one job running everything we need. &lt;a href="https://docs.github.com/en/actions/using-jobs/using-jobs-in-a-workflow" rel="noopener noreferrer"&gt;Job documentation link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The first &lt;code&gt;steps&lt;/code&gt; I will summarize as just settings to compile and run the Amass tool which is developed in Golang. Usually, when you are going to use an Action, the necessary settings will be in the documentation, don’t worry.&lt;/p&gt;

&lt;p&gt;After the initial &lt;code&gt;steps&lt;/code&gt;, let’s call the Amass Action using the Action’s Github address, &lt;code&gt;uses: fguisso/amass-action@main&lt;/code&gt; and pass in some configuration inputs:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;domains:&lt;/code&gt; I will use the domain of owasp.org to be our target, you can use the domain of your application or also pass more than one domain separated by commas.&lt;/p&gt;

&lt;p&gt;Let’s enable &lt;code&gt;brute:&lt;/code&gt; to brute force the searches found and finally pass the name of the final file &lt;code&gt;output: hosts.txt&lt;/code&gt;, where we will store the results.&lt;/p&gt;

&lt;p&gt;Well, so far we’ve done the whole process of using a tool through Github Actions, but due to how an automated pipeline works, every &lt;code&gt;job&lt;/code&gt; that we run, will upload a new machine and at the end of the process it is turned off and deleted, no holding no information or files created. So, we need to get our final &lt;code&gt;hosts.txt&lt;/code&gt; file and save it somewhere for later reference. We have several options such as uploading the file to another machine, saving the result in the Git repository, using Github Actions we can also create and interact with Issues or Pull Requests and the most used for CI/CD services is to create an artifact of your &lt;code&gt;job&lt;/code&gt;, which is what we are going to do.&lt;/p&gt;

&lt;p&gt;In the last &lt;code&gt;step&lt;/code&gt; we start another Action that serves to upload files for the artifacts of your workflow, just passing the name of the current file and the final name that will be available within the artifacts of this workflow.&lt;/p&gt;

&lt;p&gt;Now let’s run our workflow manually, just go to the Actions tab of your repository, choose the Amass Enum workflow, and click on the Run Workflow button. &lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnj3crntkls6zxgpnpacd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnj3crntkls6zxgpnpacd.png" alt="image" width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Right after you can see your workflow running and if you want to follow the &lt;code&gt;steps&lt;/code&gt; and logs, just click on your &lt;code&gt;job&lt;/code&gt; &lt;code&gt;recon&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Once the workflow finishes all the &lt;code&gt;steps&lt;/code&gt; you will be able to see the results and your artifact will be available for download:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl022eu4wp64lrt9unbgv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl022eu4wp64lrt9unbgv.png" alt="image" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Naabu Action
&lt;/h3&gt;

&lt;p&gt;Naabu is a port scan tool where it will look for the open and active ports of a given host. The creators of the project maintain an official version of a Github Actions to run Naabu, so let’s follow their documentation to follow our recon workflow.&lt;/p&gt;

&lt;p&gt;Let’s add the Naabu Action to port recognition from this list of domains that Amass has given us. As one depends on the result of the other, let’s put it in the sequence of &lt;code&gt;steps&lt;/code&gt; so that it will be executed right away if there is no error in the execution of the previous step.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Naabu - Port Scannner&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;projectdiscovery/naabu-action@main&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;list&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;hosts.txt&lt;/span&gt;
            &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;urls.txt&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As we are working with just one &lt;code&gt;job&lt;/code&gt;, Github Actions goes up a machine with some configurations and at the end of the process, this machine will be turned off and removed, with everything that was generated inside it. Since we haven’t finished our &lt;code&gt;job&lt;/code&gt; yet, so the &lt;code&gt;hosts.txt&lt;/code&gt; file is still available. In case you want to keep these results, we need to do as before and pass the result files to the artifacts of this &lt;code&gt;job&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;GitHub Workflow artifacts&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/upload-artifact@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;hosts.txt&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
            &lt;span class="s"&gt;hosts.txt&lt;/span&gt;
            &lt;span class="s"&gt;urls.txt            &lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For simplicity, let’s pass the files straight to just one artifact, so Github will create a final .zip file for you with all these files inside.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nuclei Action
&lt;/h3&gt;

&lt;p&gt;Nuclei is a template-based vulnerability scanning tool, with the help of the community today there are over 1000 ready-to-use templates that will test your application for known vulnerabilities. Like Naabu, we also have an official Nuclei Action that we will use: &lt;a href="https://github.com/marketplace/actions/nuclei-dast-scan" rel="noopener noreferrer"&gt;https://github.com/marketplace/actions/nuclei-dast-scan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attention!&lt;/strong&gt; Due to a bug found in the ProjectDiscovery Actions, I will use a fork of my own where I fixed the problem, as soon as the correction is included in the official project, I will update the article and change &lt;code&gt;fguisso/nuclei- action@inputs&lt;/code&gt; by &lt;code&gt;projectdiscovery/nuclei-action@main&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Nuclei - DAST Scan&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fguisso/nuclei-action@inputs&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;urls&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;urls.txt&lt;/span&gt;
          &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nuclei.txt&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As a previous result, now we have the hosts and their active ports, let’s move to the cores to check if all these services are found, we find any vulnerability.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running your workflow manually
&lt;/h3&gt;

&lt;p&gt;With everything configured, we can now run our workflow manually. Just access the Actions tab in your repository, select your workflow and click on &lt;code&gt;Run workflow&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You can follow the execution of your workflow or just wait until the icon turns green, which means that all the &lt;code&gt;steps&lt;/code&gt; happened correctly and you can probably download your results in the artifacts field.&lt;/p&gt;

&lt;p&gt;Whenever you want, you can update the domain you want to scan and you can also add more than one domain using just commas to separate them. Ex: &lt;code&gt;owasp.org,github.com&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Events to dispatch
&lt;/h3&gt;

&lt;p&gt;As mentioned before, workflows can respond to specific events to be able to run, and here we are just going to create a schedule so that we can run our workflow once a week.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;schedule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;cron&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;0'&lt;/span&gt;
    &lt;span class="na"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can schedule using cron schedule expressions, so our workflow will run once a week, every Sunday at 00:00.&lt;/p&gt;

&lt;p&gt;Do not remove the &lt;code&gt;workflow_dispatch&lt;/code&gt; line unless you are already certain that you will no longer use the manual trigger button.&lt;/p&gt;

&lt;p&gt;Here is a list of other events that you can use to run your workflows automatically. Read more about it in the Github Actions documentation &lt;a href="https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on" rel="noopener noreferrer"&gt;https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>owasp</category>
      <category>security</category>
      <category>github</category>
      <category>dast</category>
    </item>
    <item>
      <title>Automação básica de Recon utilizando o Github Actions</title>
      <dc:creator>Fernando Guisso</dc:creator>
      <pubDate>Wed, 16 Mar 2022 03:00:45 +0000</pubDate>
      <link>https://dev.to/fguisso/automacao-basica-de-recon-utilizando-o-github-actions-12gn</link>
      <guid>https://dev.to/fguisso/automacao-basica-de-recon-utilizando-o-github-actions-12gn</guid>
      <description>&lt;p&gt;Atualmente vem crescendo o número de empresas que utilizam soluções de CI(Continuous Integration) e CD(Continuous Deploy) para automatizar o processo do ciclo de vida do software(SLD). As ferramentas mais utilizadas são Jenkins, Github Actions, Gitlab CI e por aí vai. Estas ferramentas trazem a facilidade de automatizar os testes de software, linters de código, criação de releases e versões finais do software.&lt;/p&gt;

&lt;p&gt;No mundo da segurança algumas empresas também já estão implementando os testes de segurança estáticos(SAST) e testes de composição de software(SCA) comprometidos. A cada adição de código ou feature, agora o software pode ser testado antes de ir para produção.&lt;/p&gt;

&lt;p&gt;A ideia de trabalhar com ferramentas de segurança no CI/CD vai além do fato de automatizar tarefas, mas também de trazer a cultura de segurança da informação para os times de desenvolvedores e times de infraestrutura, a famosa cultura de DevSecOps. Muito importante no momento que passamos onde os times de desenvolvimento estão escalando absurdamente e não temos especialistas de segurança para acompanhar estes times.&lt;/p&gt;

&lt;h2&gt;
  
  
  Casos de usos para além dos testes estáticos(SAST e SCA)
&lt;/h2&gt;

&lt;p&gt;O caso mais simples de uso que podemos abordar é testes dinâmicos de segurança agendados para acontecer periodicamente, levando em conta que a aplicação já esteja em produção.&lt;/p&gt;

&lt;p&gt;Outros casos interessantes seria a possibilidade de times de Red Team, se aproveitarem das notificações de eventos de uma pipeline, para lançar testes automatizados assim que comece o desenvolvimento de uma nova feature. Irei abordar este tema mais a fundo em outro artigo.&lt;/p&gt;

&lt;p&gt;O que vamos explorar mais neste artigo é o reconhecimento de aplicação já em produção, onde vamos apontar um domínio para nosso CI que vai rodar periodicamente algumas ferramentas de reconhecimento, o que pode ser usado depois pelos times de segurança para futuras análises de segurança.&lt;/p&gt;

&lt;h2&gt;
  
  
  Github e Github Actions
&lt;/h2&gt;

&lt;p&gt;Vamos utilizar o Github para versionar e armazenar nosso projeto, então acesse github.com e crie um novo repositório. Agora vamos criar e editar alguns arquivos, caso você não conheça bem o funcionamento do Github, pode usar a interface gráfica mesmo. O Github Actions já é um serviço habilitado do Github, bastando apenas que você coloque os arquivos de configuração da pipeline em uma pasta chamada &lt;code&gt;.github/workflows&lt;/code&gt; e todas as interações e logs desta pipeline serão visíveis na aba actions.&lt;/p&gt;

&lt;p&gt;Para facilitar a criação de pipelines, o Github Actions oferece as Actions, que são conjuntos de configurações e instalações prontas para você utilizar na sua pipeline, sem a necessidade de você se preocupar com isso. Algumas Actions oficiais estão disponíveis no Marketplace do Github, porém você pode utilizar diretamente qualquer Action que seja um repositório no Github.&lt;/p&gt;

&lt;p&gt;Saiba mais sobre as Actions aqui e o link para o marketplace.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoh76jplg5cx47x7ivl4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoh76jplg5cx47x7ivl4.png" alt="image" width="406" height="307"&gt;&lt;/a&gt; &lt;em&gt;Exemplos de arquivos workflow separados.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypt82hisf3u76t0v2mw6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypt82hisf3u76t0v2mw6.png" alt="image" width="709" height="227"&gt;&lt;/a&gt;&lt;em&gt;Aba de recursos do Github Actions com workflows configurados.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Amass Action
&lt;/h3&gt;

&lt;p&gt;Amass de acordo com sua documentação oficial:&lt;/p&gt;

&lt;p&gt;O projeto OWASP Amass realiza mapeamento de rede de superfícies de ataque e descoberta de ativos externos usando coleta de informações de código aberto e técnicas de reconhecimento ativo.&lt;/p&gt;

&lt;p&gt;Amass é uma ferramenta muito poderosa que nos fornece funções para o reconhecimento e também para o gerenciamento das informações coletadas. Em nosso caso, vamos utilizar o Amass Action apenas para enumerar um domínio e trazer o resultado em um arquivo txt para usar posteriormente.&lt;/p&gt;

&lt;p&gt;Em seu repositório crie um arquivo chamado &lt;code&gt;amass.yml&lt;/code&gt; dentro da pasta &lt;code&gt;.github/workflows&lt;/code&gt; e adicione estas configurações e vamos analisar linha a linha o que estamos fazendo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;🔎 Recon&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;recon&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-go@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;go-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.17&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Amass - Enumeration&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fguisso/amass-action@main&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;domains&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;owasp.org&lt;/span&gt;
          &lt;span class="na"&gt;brute&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
          &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;hosts.txt&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;GitHub Workflow artifacts&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/upload-artifact@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;hosts.txt&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;hosts.txt&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Obs: arquivos .yml/.yaml são fortemente identados, então os tabs e espaços dentro do arquivo precisam estar corretos para não acontecer erros. Você pode utilizar o próprio Github para validar seu arquivo ou utilizar um linter de arquivos YAML.&lt;/p&gt;

&lt;p&gt;Na primeira linha &lt;code&gt;name:&lt;/code&gt; é apenas um identificador para sua pipeline ser facilmente encontrada dentro da aba Actions do Github.&lt;/p&gt;

&lt;p&gt;Depois do &lt;code&gt;on:&lt;/code&gt; é onde podemos automatizar para que o workflow inicie de acordo com algum evento programado, podendo ser acionada por um ou mais eventos, no momento escolhemos &lt;code&gt;workflow_dispatch:&lt;/code&gt; para que ela fique disponível no dashboard de Actions e possamos ativar a qualquer momento. Mais para o final veremos como disparar este workflow agendada para rodar 1 vez por semana, mas você também pode disparar usando eventos do Git como, disparar sempre que houver um Pull Request na branch de desenvolvimento, disparar apenas quando acontecer um Merge do branch principal.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;jobs:&lt;/code&gt; é onde podemos separar Actions para rodar em paralelo, como estamos usando a versão Free do Github Actions, vamos tentar manter sempre apenas um job executando tudo o que precisarmos. &lt;a href="https://docs.github.com/en/actions/using-jobs/using-jobs-in-a-workflow" rel="noopener noreferrer"&gt;Link da documentação sobre jobs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Os primeiros &lt;code&gt;steps&lt;/code&gt; vou resumir como apenas configurações para compilar e rodar a ferramenta Amass que é desenvolvida em Golang. Geralmente quando você for usar uma Action, as configurações necessárias estarão na documentações, não se preocupe.&lt;/p&gt;

&lt;p&gt;Depois dos &lt;code&gt;steps&lt;/code&gt; iniciais, vamos chamar o Amass Action utilizando o endereço da Action no Github, &lt;code&gt;uses: fguisso/amass-action@main&lt;/code&gt; e passar alguns inputs de configurações:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;domains:&lt;/code&gt; vou utilizar o domínio da owasp.org para ser nosso target, você pode utilizar o domínio de sua aplicação ou também passar mais de um domínio separados por vírgula.&lt;/p&gt;

&lt;p&gt;Vamos habilitar o &lt;code&gt;brute:&lt;/code&gt; para fazer um brute force nas pesquisas encontradas e para finalizar vamos passar o nome do arquivo final &lt;code&gt;output: hosts.txt&lt;/code&gt;, onde vamos armazenar os resultados.&lt;/p&gt;

&lt;p&gt;Bom, até aqui já fizemos todo o processo de utilizar uma ferramenta pelo Github Actions, mas devido ao como funciona uma pipeline automatizada, todo &lt;code&gt;job&lt;/code&gt; que rodamos, vai subir uma nova máquina e no final do processo ela é desligada e deletada, não segurando nenhuma informação ou arquivos criados. Sendo assim, precisamos pegar o nosso arquivo final &lt;code&gt;hosts.txt&lt;/code&gt; e salvar em algum lugar para ser consultado posteriormente. Temos várias opções como fazer o upload do arquivo para outra máquina, salvar o resultado no próprio repositório Git, utilizando o Github Actions podemos também criar e interagir com as Issues ou Pull Request e o mais utilizado para serviços de CI/CD é criar um artefato do seu &lt;code&gt;job&lt;/code&gt;, que é o que vamos fazer.&lt;/p&gt;

&lt;p&gt;No ultimo &lt;code&gt;step&lt;/code&gt; iniciamos uma outra Action que serve para fazer o upload de arquivos para os artefatos do seu workflow, apenas bastando passar o nome do arquivo atual e qual o nome final que ficará disponível dentro dos artefatos deste workflow.&lt;/p&gt;

&lt;p&gt;Agora vamos rodar nosso workflow manualmente, basta ir na aba Actions do seu repositório, escolher o workflow Amass Enum e clicar no botão Run Workflow. &lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnj3crntkls6zxgpnpacd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnj3crntkls6zxgpnpacd.png" alt="image" width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Logo apos você podera ver seu workflow rodando e caso queira acompanhar os &lt;code&gt;steps&lt;/code&gt; e logs, é só clicar no seu &lt;code&gt;job&lt;/code&gt; &lt;code&gt;recon&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Assim que o workflow finalizar todos os &lt;code&gt;steps&lt;/code&gt; você vai conseguir ver os resultados e seu artefato estará disponível para download:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl022eu4wp64lrt9unbgv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl022eu4wp64lrt9unbgv.png" alt="image" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Naabu Action
&lt;/h3&gt;

&lt;p&gt;Naabu é uma ferramenta de scan de portas, onde ele vai procurar as portas abertas e ativas de um determinado host. Os criadores do projeto mantém uma versão oficial de uma Github Actions para rodar o Naabu, então vamos seguir a documentação deles para seguir com o nosso workflow de recon.&lt;/p&gt;

&lt;p&gt;Vamos adicionar a Naabu Action para fazermos o reconhecimento das portas dessa lista de domínios que o Amass nos entregou. Como um depende do resultado do outro, vamos colocar na sequência de &lt;code&gt;steps&lt;/code&gt; para que seja executado logo em seguida caso não tenha nenhum erro na execução do passo anterior.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Naabu - Port Scannner&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;projectdiscovery/naabu-action@main&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;list&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;hosts.txt&lt;/span&gt;
            &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;urls.txt&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Como estamos trabalhando com apenas um &lt;code&gt;job&lt;/code&gt;, o Github Actions sobe uma máquina com algumas configurações e ao final do processo esta máquina vai ser desligada e removida, com tudo o que foi gerado dentro dela. Já que não finalizamos nosso &lt;code&gt;job&lt;/code&gt; ainda, então o arquivo &lt;code&gt;hosts.txt&lt;/code&gt; ainda está disponível. Caso você queira manter estes resultados, precisamos fazer como anteriormente e passar os arquivos de resultado para os artefatos deste &lt;code&gt;job&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;GitHub Workflow artifacts&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/upload-artifact@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;hosts.txt&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
            &lt;span class="s"&gt;hosts.txt&lt;/span&gt;
            &lt;span class="s"&gt;urls.txt            &lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para simplificar, vamos passar os arquivos direto para apenas um artefato, assim o Github vai criar um arquivo .zip final para você com todos estes arquivos dentro.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nuclei Action
&lt;/h3&gt;

&lt;p&gt;Nuclei é uma ferramenta de scan de vulnerabilidades baseado em templates, com a ajuda da comunidade hoje existem mais de 1000 templates prontos para usar que vão testar sua aplicação em busca de vulnerabilidades conhecidas. Assim como Naabu, também temos um Action oficial do Nuclei que vamos utilizar: &lt;a href="https://github.com/marketplace/actions/nuclei-dast-scan" rel="noopener noreferrer"&gt;https://github.com/marketplace/actions/nuclei-dast-scan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Atenção!&lt;/strong&gt; Devido a um bug encontrado nas Actions do ProjectDiscovery, vou utilizar um fork proprio onde eu corrigi o problema, assim que a correção for incluida no projeto oficial, vou fazer o update do artigo e trocar &lt;code&gt;fguisso/nuclei-action@inputs&lt;/code&gt; por &lt;code&gt;projectdiscovery/nuclei-action@main&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Nuclei - DAST Scan&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fguisso/nuclei-action@inputs&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;urls&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;urls.txt&lt;/span&gt;
          &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nuclei.txt&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com o resultado anterior, agora temos os hosts e suas portas ativas, vamos passar para o nuclei verificar se em todos estes serviços encontrados, achamos alguma vulnerabilidade.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rodando seu workflow manualmente
&lt;/h3&gt;

&lt;p&gt;Com tudo configurado, agora podemos rodar o nosso workflow manualmente. Basta acessar a aba Actions no seu repositório, selecionar seu workflow e clicar em &lt;code&gt;Run workflow&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Você pode acompanhar a execução do seu workflow ou apenas esperar até o ícone ficar verde, o que quer dizer que todas os &lt;code&gt;steps&lt;/code&gt; aconteceram de forma correta e provavelmente você pode baixar seus resultados no campo de artefatos.&lt;/p&gt;

&lt;p&gt;Sempre que quiser, você pode atualizar o domínio que quer escanear e também pode acrescentar mais de um domínio utilizando apenas vírgulas para separá-los. Ex: &lt;code&gt;owasp.org,github.com&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Eventos para automatizar
&lt;/h3&gt;

&lt;p&gt;Como já falado anteriormente, os workflows podem responder a eventos específicos para poder rodar e aqui vamos apenas criar um agendamento, para que possamos rodar nosso workflow uma vez por semana.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;schedule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;cron&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;0'&lt;/span&gt;
    &lt;span class="na"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos agendar usando expressões cron schedule, assim nosso workflow vai executar uma vez por semana, toda segunda feira as 00:00.&lt;/p&gt;

&lt;p&gt;Não remova a linha &lt;code&gt;workflow_dispatch&lt;/code&gt; a não ser que você já esteja certo de que não vai usar mais o botão de disparo manual.&lt;/p&gt;

&lt;p&gt;Aqui tem uma lista de outros eventos que você pode utilizar para executar seus workflows automaticamente. Leia mais sobre na documentação do Github Actions &lt;a href="https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on" rel="noopener noreferrer"&gt;https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>owasp</category>
      <category>security</category>
      <category>github</category>
      <category>dast</category>
    </item>
    <item>
      <title>Conhecendo a OWASP</title>
      <dc:creator>Fernando Guisso</dc:creator>
      <pubDate>Thu, 02 Apr 2020 02:15:09 +0000</pubDate>
      <link>https://dev.to/fguisso/conhecendo-a-owasp-1n0j</link>
      <guid>https://dev.to/fguisso/conhecendo-a-owasp-1n0j</guid>
      <description>&lt;h2&gt;
  
  
  Open Web Application Security Project
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7d77b9woxdq5vxoo3erl.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7d77b9woxdq5vxoo3erl.jpeg" width="600" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Open Community
&lt;/h3&gt;

&lt;p&gt;OWASP é uma comunidade internacional aberta, dedicada em ajudar organizações a manter, desenvolver, adquirir e operar aplicações confiáveis. Com ferramentas, documentos, fóruns e capítulos, abertas e gratuitas para qualquer pessoa interessada em melhorar a segurança de suas aplicações.&lt;/p&gt;

&lt;p&gt;O projeto também mantem a Fundação OWASP, uma instituição internacional para dar suporte aos projetos de longo prazo da comunidade.&lt;/p&gt;

&lt;h3&gt;
  
  
  Valores
&lt;/h3&gt;

&lt;p&gt;OPEN/ABERTO; &lt;em&gt;Tudo é radicalmente transparente, desde as finanças até o nosso código.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;INNOVATION/INOVAÇÃO; &lt;em&gt;Incentiva e apoia inovações e experimentos para solucionar desafios de segurança do software.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;GLOBAL; &lt;em&gt;Qualquer pessoa em todo o mundo é incentivada a participar da comunidade.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;INTEGRITY/INTEGRIDADE; É uma comunidade global honesta e verdadeira, neutra em relação a fornecedores.&lt;/p&gt;

&lt;h2&gt;
  
  
  Projetos
&lt;/h2&gt;

&lt;p&gt;Vamos apresentar agora alguns projetos conhecidos da OWASP, sempre lembrando que você pode encontrar todo o conteúdo aberto pela internet e também pode colaborar com a construção deles.&lt;/p&gt;

&lt;h3&gt;
  
  
  OWASP Top 10
&lt;/h3&gt;

&lt;p&gt;É um documento de conscientização para segurança de aplicações web. Ele reune os riscos mais críticos de segurança de aplicações web. Nesta lista você pode encontrar algumas vulnerabilidades, como checar se sua aplicação não esta vulnerável a elas e também algumas contramedidas. &lt;a href="https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project" rel="noopener noreferrer"&gt;Link do projeto&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  OWASP Zed Attack Proxy (ZAP)
&lt;/h3&gt;

&lt;p&gt;O ZAP é uma ferramenta de testes de vulnerabilidades popular entre profissionais de segurança e pentesters. Ele pode te ajudar no processo de encontrar e tratar vulnerabilidades em suas aplicações web. &lt;a href="https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project" rel="noopener noreferrer"&gt;Link do projeto.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  OWASP Offensive Web Testing Framework (OWTF)
&lt;/h3&gt;

&lt;p&gt;Também uma ferramenta para te auxiliar na busca de vulnerabilidades, o OWTF foi criado para automatizar estes processos e tornar os testes manuais e repetitivos menos chatos. Com suporte direto para os padrões NTIS e PTES. &lt;a href="https://owtf.github.io/" rel="noopener noreferrer"&gt;Link do projeto.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP DefectDojo
&lt;/h2&gt;

&lt;p&gt;Uma ótima ferramenta de gerenciamento de vulnerabilidades, otimiza o processo de teste, com ferramentas de modelagem, geração de relatórios e métricas. Pare de gastar uma fortuna com outros gerenciadores de vulnerabilidades e comece contribuindo com o código dessa poderosa ferramenta. &lt;a href="https://github.com/DefectDojo/django-DefectDojo/" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP Amass
&lt;/h2&gt;

&lt;p&gt;Enumeração de DNS e mapeamento de infraestrutura com técnicas para obter subdomínios com scraping na web, APIs e consultando bancos de dados públicos. Todo esse poder em uma simples ferramenta, vale a pena colocar no seu bat-cinto de utilidades. &lt;a href="https://github.com/OWASP/Amass" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP D4N155
&lt;/h2&gt;

&lt;p&gt;OSINT de uma maneira inteligente, este projeto cria wordlists baseado no conteúdo do seu alvo, juntamente com técnicas de Google Dorks. Futuramente algumas features de inteligência de dados serão adicionados e você pode fazer parte do desenvolvimento desta ferramenta. &lt;a href="https://github.com/OWASP/D4N155" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  OWASP Juice Shop Project
&lt;/h3&gt;

&lt;p&gt;Como eles gostam de dizer, *é provavelmente a mais moderna e sofisticada aplicação web insegura! *Sim, é isso mesmo, uma aplicação insegura para você testar e aprender sobre as Top 10 vulnerabilidades, com todo um suporte de aprendizagem, livro e ferramentas para facilitar na hora de aprender. &lt;a href="https://www.owasp.org/index.php/OWASP_Juice_Shop_Project" rel="noopener noreferrer"&gt;Link do projeto.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Estes são alguns dos muitos projetos, caso você queira conhecer todos os projetos, pode dar uma olhada no &lt;a href="https://www.owasp.org/index.php/Category:OWASP_Project#tab=Project_Inventory" rel="noopener noreferrer"&gt;repositório de projetos&lt;/a&gt;. Caso você queira participar dos projetos, entre no github do projeto ou entre em contato com o seu Project Leader.&lt;/p&gt;

</description>
      <category>owasp</category>
      <category>appsec</category>
      <category>infosec</category>
      <category>security</category>
    </item>
    <item>
      <title>Hacktoberfest Owasp English</title>
      <dc:creator>Fernando Guisso</dc:creator>
      <pubDate>Sat, 05 Oct 2019 14:26:27 +0000</pubDate>
      <link>https://dev.to/fguisso/hacktoberfest-owasp-english-3ga7</link>
      <guid>https://dev.to/fguisso/hacktoberfest-owasp-english-3ga7</guid>
      <description>&lt;p&gt;October is here and everyone is running after their 4 PR’s to win a digitalocean t-shirt!&lt;/p&gt;

&lt;p&gt;For those who don’t know, in October there is Hacktoberfest, an online and global event where people are awarded for contributing open source code. More information you can see on the official website of the &lt;a href="https://hacktoberfest.digitalocean.com" rel="noopener noreferrer"&gt;event&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  OWASP and projects!
&lt;/h1&gt;

&lt;p&gt;The information security crowd knows how important the tools that assist in the process of code and vulnerability analysis are, and now is the time to contribute these tools and materials.&lt;/p&gt;

&lt;p&gt;Here’s a list of the most interesting OWASP projects that can help you with your work and also accept that you contribute code or documentation:&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP Top 10
&lt;/h2&gt;

&lt;p&gt;It is a web application security awareness document. It meets the most critical web application security risks. In this list you can find some vulnerabilities, such as checking if your application is not vulnerable to them and also some countermeasures. &lt;a href="https://github.com/OWASP/Top10/issues" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP Zed Attack Proxy(ZAP)
&lt;/h2&gt;

&lt;p&gt;ZAP is a popular vulnerability testing tool among security professionals and pentesters. It can help you in the process of finding and addressing vulnerabilities in your web applications. &lt;a href="https://github.com/zaproxy/zaproxy/" rel="noopener noreferrer"&gt;Github&lt;/a&gt; &lt;a href="https://github.com/zaproxy/zap-extensions/" rel="noopener noreferrer"&gt;ZAP Extensions&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP Juice Shop Project
&lt;/h2&gt;

&lt;p&gt;As they like to say, it’s probably the most modern and sophisticated insecure web application! Yes, that’s right, an insecure application for you to test and learn about the Top 10 vulnerabilities, with a complete learning support, book and tools to make learning easier. &lt;a href="https://github.com/bkimminich/juice-shop" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP DefectDojo
&lt;/h2&gt;

&lt;p&gt;A great vulnerability management tool, it streamlines the testing process with modeling, reporting, and metrics tools. Stop spending a fortune on other vulnerability managers and start contributing the code of this powerful tool. &lt;a href="https://github.com/DefectDojo/django-DefectDojo/" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP Amass
&lt;/h2&gt;

&lt;p&gt;DNS enumeration and infrastructure mapping with techniques for obtaining web-scraped subdomains, APIs, and querying public databases. All that power in one simple tool is worth putting in your utility belt-bat. &lt;a href="https://github.com/OWASP/Amass" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP D4N155
&lt;/h2&gt;

&lt;p&gt;OSINT In a smart way, this project creates wordlists based on the content of your target along with Google Dorks techniques. In the future some data intelligence features will be added and you can be part of the development of this tool. &lt;a href="https://github.com/OWASP/D4N155" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are some of the many projects, so if you want to know all the projects, you can check out the &lt;a href="https://www.owasp.org/index.php/Category:OWASP_Project#tab=Project_Inventory" rel="noopener noreferrer"&gt;project repository&lt;/a&gt;. If you would like to participate in the projects, log into the project github or contact your Project Leader.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Hacktoberfest Owasp</title>
      <dc:creator>Fernando Guisso</dc:creator>
      <pubDate>Sat, 05 Oct 2019 14:26:27 +0000</pubDate>
      <link>https://dev.to/fguisso/hacktoberfest-owasp-4koo</link>
      <guid>https://dev.to/fguisso/hacktoberfest-owasp-4koo</guid>
      <description>&lt;p&gt;Mês de outubro chegou e todo mundo está correndo atrás dos seus 4 PR’s para ganhar uma camiseta da digitalocean!&lt;/p&gt;

&lt;p&gt;Para quem não sabe, no mês de outubro acontece o Hacktoberfest, um evento online e global onde as pessoas são premiadas por contribuir com código open source. Mais informações você pode ver no site oficial do &lt;a href="https://hacktoberfest.digitalocean.com" rel="noopener noreferrer"&gt;evento&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  OWASP e seus projetos!
&lt;/h1&gt;

&lt;p&gt;A galera de segurança da informação sabe o quão importante são as ferramentas que auxiliam no processo de análise de código e vulnerabilidades e agora é a hora de contribuirmos com essas ferramentas e materiais.&lt;/p&gt;

&lt;p&gt;Segue uma lista com os projetos mais interessantes da OWASP que podem te ajudar no trabalho e também aceitam que você contribua com o código ou documentação:&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP Top 10
&lt;/h2&gt;

&lt;p&gt;É um documento de conscientização para segurança de aplicações web. Ele reúne os riscos mais críticos de segurança de aplicações web. Nesta lista você pode encontrar algumas vulnerabilidades, como checar se sua aplicação não está vulnerável a elas e também algumas contramedidas. &lt;a href="https://github.com/OWASP/Top10/issues" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP Zed Attack Proxy (ZAP)
&lt;/h2&gt;

&lt;p&gt;O ZAP é uma ferramenta de testes de vulnerabilidades popular entre profissionais de segurança e pentesters. Ele pode te ajudar no processo de encontrar e tratar vulnerabilidades em suas aplicações web. &lt;a href="https://github.com/zaproxy/zaproxy/" rel="noopener noreferrer"&gt;Github&lt;/a&gt; &lt;a href="https://github.com/zaproxy/zap-extensions/" rel="noopener noreferrer"&gt;Extensões ZAP&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP Juice Shop Project
&lt;/h2&gt;

&lt;p&gt;Como eles gostam de dizer, é provavelmente a mais moderna e sofisticada aplicação web insegura! Sim, é isso mesmo, uma aplicação insegura para você testar e aprender sobre as Top 10 vulnerabilidades, com todo um suporte de aprendizagem, livro e ferramentas para facilitar na hora de aprender. &lt;a href="https://github.com/bkimminich/juice-shop" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP DefectDojo
&lt;/h2&gt;

&lt;p&gt;Uma ótima ferramenta de gerenciamento de vulnerabilidades, otimiza o processo de teste, com ferramentas de modelagem, geração de relatórios e métricas. Pare de gastar uma fortuna com outros gerenciadores de vulnerabilidades e comece contribuindo com o código dessa poderosa ferramenta. &lt;a href="https://github.com/DefectDojo/django-DefectDojo/" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP Amass
&lt;/h2&gt;

&lt;p&gt;Enumeração de DNS e mapeamento de infraestrutura com técnicas para obter subdomínios com scraping na web, APIs e consultando bancos de dados públicos. Todo esse poder em uma simples ferramenta, vale a pena colocar no seu bat-cinto de utilidades. &lt;a href="https://github.com/OWASP/Amass" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP D4N155
&lt;/h2&gt;

&lt;p&gt;OSINT de uma maneira inteligente, este projeto cria wordlists baseado no conteúdo do seu alvo, juntamente com técnicas de Google Dorks. Futuramente algumas features de inteligência de dados serão adicionados e você pode fazer parte do desenvolvimento desta ferramenta. &lt;a href="https://github.com/OWASP/D4N155" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Estes são alguns dos muitos projetos, caso você queira conhecer todos os projetos, pode dar uma olhada no &lt;a href="https://www.owasp.org/index.php/Category:OWASP_Project#tab=Project_Inventory" rel="noopener noreferrer"&gt;repositório de projetos&lt;/a&gt;. Caso você queira participar dos projetos, entre no github do projeto ou entre em contato com o seu Project Leader.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Escrevendo artigos e palestras</title>
      <dc:creator>Fernando Guisso</dc:creator>
      <pubDate>Fri, 22 Feb 2019 23:42:45 +0000</pubDate>
      <link>https://dev.to/fguisso/escrevendo-artigos-e-palestras-2b2o</link>
      <guid>https://dev.to/fguisso/escrevendo-artigos-e-palestras-2b2o</guid>
      <description>&lt;h1&gt;
  
  
  Escrevendo artigos e palestras
&lt;/h1&gt;

&lt;p&gt;Veja como começar a compartilhar conhecimento de umas vez por todas.&lt;/p&gt;

&lt;p&gt;Se você chegou até aqui, o seu desafio é começar um artigo ou palestra logo após terminar a leitura, não me deixe desapontado.&lt;/p&gt;

&lt;p&gt;Escrever artigos e palestras é uma coisa magnifica pois é um dos meios de compartilhar e descentralizar o conhecimento, o que é um dos mantras da cultura hacker que eu gosto muito de seguir.&lt;/p&gt;

&lt;p&gt;A algum tempo participo e ajudo a organizar eventos de tecnologia, atualmente sou membro da equipe de conteúdos da Campus Party Brasil e responsável pelas comunidades do evento. Sendo assim eu busquei um pouco sobre como palestrar melhor e aprendi algumas coisas por ai. Inclusive fiz um curso bem legal que foi muito bom não só para palestrar, mas também para o meu auto conhecimento, recomendo muito. &lt;a href="https://leonardocalixto.com.br/" rel="noopener noreferrer"&gt;https://leonardocalixto.com.br/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---EHCL5Ka--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2094/0%2AfoIwlR7-piwD2uWs" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---EHCL5Ka--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2094/0%2AfoIwlR7-piwD2uWs" alt="Palestra sobre phishing no LAMEC 2018" width="800" height="533"&gt;&lt;/a&gt;&lt;em&gt;Palestra sobre phishing no LAMEC 2018&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Lógico que palestrar e escrever um artigo são coisas diferentes, mas na minha mente uma boa palestra começa com um bom planejamento, que pode ser um artigo. Imagina se toda palestra já tivesse seu artigo bunitinho, o mundo seria melhor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Storytelling
&lt;/h3&gt;

&lt;p&gt;Aqui você não vai encontrar muito sobre este assunto, então vou deixar alguns links para você se aprofundar, mas em resumo, um bom artigo ou palestra nada mais é do que uma boa historia contada.&lt;/p&gt;

&lt;p&gt;E uma historia precisa de um começo, meio e fim. Por exemplo a chapeuzinho vermelho:&lt;/p&gt;

&lt;p&gt;Começa com uma garota, como ela é, o que ela tem e oque ela precisa de fazer.&lt;/p&gt;

&lt;p&gt;No meio, se desenvolve o que ela fez com tudo o que foi apresentado, a historia chega a dar um frio na barriga, uma curiosidade, até chegar no climax da situação.&lt;/p&gt;

&lt;p&gt;Por fim tudo que foi desenvolvido no meio, chega em uma solução, tudo se encaixa e termina bem.&lt;/p&gt;

&lt;p&gt;Assim deve ser o seu artigo ou palestra, você escolhe um tema, pequeno pois não quer escrever um livro e nem dar uma palestra-filme, elucida os pontos para iniciar o desenvolvimento da historia e atraia a curiosidade do leitor, depois explica cada ponto trazido no inicio, e ao fim, chega em uma conclusão.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dicas e links
&lt;/h3&gt;

&lt;p&gt;Pegue artigos e palestra com o tema parecido com seu e analise como foi construído.&lt;/p&gt;

&lt;p&gt;Fale de coisas que você tenha propriedade, isso não quer dizer que se você não entende um assunto 100%, não pode falar sobre ele. Por exemplo gosto muito palestras, mas não sou formado em comunicação para estar falando aqui, acontece que mesmo assim estou compartilhando experiencias que deram certo comigo e são legais para quem esta começando e não vou alem do que eu não sei.&lt;/p&gt;

&lt;p&gt;Medo, vai com medo mesmo, feedbacks são importantes, se preocupe se você só tiver recebendo feedbacks bons, talvez as pessoas não querem perder tempo discutindo com você. Se for feedback ruim, melhor ainda que você vai ter coisas para melhor e aprender coisas novas.&lt;/p&gt;

&lt;p&gt;Em palestras as coisas vão muito alem de uma linha de raciocínio do storytelling, existe o tom de voz, a postura do palestrante, improviso, humor e por ai vai, técnicas de palco em geral, nada muito difícil que você não possa aprender na internet.&lt;/p&gt;

&lt;p&gt;Manual ilustrado para palestrantes dos TEDx &amp;lt;&lt;a href="http://storage.ted.com/tedx/manuals/IllustratedTEDxSpeakerGuide.pdf" rel="noopener noreferrer"&gt;http://storage.ted.com/tedx/manuals/IllustratedTEDxSpeakerGuide.pdf&lt;/a&gt;&amp;gt;&lt;/p&gt;

&lt;p&gt;Palestra de humor de como um TED fica tão bom, é engraçado mas da para tirar alguns insights de como montar uma palestra chamativa &amp;lt;&lt;a href="https://www.youtube.com/watch?v=8S0FDjFBj8o" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=8S0FDjFBj8o&lt;/a&gt;&amp;gt;&lt;/p&gt;

&lt;p&gt;Outras referencias sobre Talks about talks &amp;lt;&lt;a href="https://www.ted.com/playlists/574/how_to_make_a_great_presentation" rel="noopener noreferrer"&gt;https://www.ted.com/playlists/574/how_to_make_a_great_presentation&lt;/a&gt;&amp;gt;&lt;/p&gt;

&lt;p&gt;Artigo muito bom de como começar com artigos &amp;lt;&lt;a href="https://medium.com/trainingcenter/o-que-eu-devo-saber-para-escrever-artigos-1d6a6902d6bb" rel="noopener noreferrer"&gt;https://medium.com/trainingcenter/o-que-eu-devo-saber-para-escrever-artigos-1d6a6902d6bb&lt;/a&gt;&amp;gt;&lt;/p&gt;

&lt;p&gt;Dicas marotas para artigos técnicos &amp;lt;&lt;a href="https://medium.com/@rosariopfernandes/writer-4195046ab0c4" rel="noopener noreferrer"&gt;https://medium.com/@rosariopfernandes/writer-4195046ab0c4&lt;/a&gt;&amp;gt;&lt;/p&gt;

&lt;p&gt;O famoso design thinking para palestras &amp;lt;&lt;a href="https://medium.com/uxconfbr/como-criar-uma-apresenta%C3%A7%C3%A3o-inteira-antes-mesmo-de-abrir-o-powerpoint-fbdbebbbb3a6" rel="noopener noreferrer"&gt;https://medium.com/uxconfbr/como-criar-uma-apresenta%C3%A7%C3%A3o-inteira-antes-mesmo-de-abrir-o-powerpoint-fbdbebbbb3a6&lt;/a&gt;&amp;gt;&lt;/p&gt;

&lt;p&gt;10 dicas ótimas &amp;lt;&lt;a href="https://medium.com/uxconfbr/guia-para-palestrar-em-eventos-da-sua-comunidade-profissional-parte-i-4c2dc28553dd" rel="noopener noreferrer"&gt;https://medium.com/uxconfbr/guia-para-palestrar-em-eventos-da-sua-comunidade-profissional-parte-i-4c2dc28553dd&lt;/a&gt;&amp;gt;&lt;/p&gt;

&lt;p&gt;Palestras acessíveis &lt;em&gt;-&lt;/em&gt; &amp;lt;&lt;a href="https://medium.com/uxconfbr/guia-para-eventos-acessiveis-como-fazer-apresentacoes-parte-i-137317610631" rel="noopener noreferrer"&gt;https://medium.com/uxconfbr/guia-para-eventos-acessiveis-como-fazer-apresentacoes-parte-i-137317610631&lt;/a&gt;&amp;gt;&lt;/p&gt;

&lt;p&gt;Passei de curioso para influencer de artigos, como se tornar Zika da balada no Medium &amp;lt;&lt;a href="https://valternascimento.com.br/como-escrever-textos-de-sucesso-no-medium-5cba69be8a1e" rel="noopener noreferrer"&gt;https://valternascimento.com.br/como-escrever-textos-de-sucesso-no-medium-5cba69be8a1e&lt;/a&gt;&amp;gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Desvendando o blockchain</title>
      <dc:creator>Fernando Guisso</dc:creator>
      <pubDate>Sat, 01 Sep 2018 23:42:45 +0000</pubDate>
      <link>https://dev.to/fguisso/desvendando-o-blockchain-1d37</link>
      <guid>https://dev.to/fguisso/desvendando-o-blockchain-1d37</guid>
      <description>&lt;p&gt;São quase 10 anos desde o paper de Satoshi Nakamoto apresentando o conceito de um sistema de dinheiro eletrônico peer-to-peer, e você ainda não sabe o que é Bitcoin e muito menos Blockchain. Então vamos lá porque ainda da tempo de entrar na crista da onda!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7tltol669e2ey7vlnpwm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7tltol669e2ey7vlnpwm.jpg" alt="In Blockchain we trust!" width="700" height="489"&gt;&lt;/a&gt;&lt;em&gt;In Blockchain we trust!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Existem alguns textos para crianças de cinco anos explicando o conceito, mas nesta época que vivemos, essas crianças já nascem sabendo, então não sinta-se desmerecido em ler textos deste tipo, com certeza você vai conseguir visualizar o conceito e depois partir para partes mais técnicas. Aqui vai um dos exemplos que sempre utilizo e gosto muito:&lt;/p&gt;

&lt;h3&gt;
  
  
  A troca da maçã
&lt;/h3&gt;

&lt;p&gt;Nós estamos sentados em um banco no parque Ibirapuera. É um belo dia. Eu tenho uma maçã comigo, e dou ela pra você.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qbt0a4qyattwchxp9yr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qbt0a4qyattwchxp9yr.jpg" width="750" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Você agora tem um maçã e eu tenho zero. Muito simples, certo?&lt;/p&gt;

&lt;p&gt;Minha maçã esta fisicamente sendo coloca em sua mão. Você sabe que aconteceu. Eu estava lá, você estava lá — você a tocou.&lt;/p&gt;

&lt;p&gt;Não precisamos de uma terceira pessoa para nos ajudar na transferencia. Não precisamos de um Juiz entre nós para confirmar que a maçã passou de mim para você.&lt;/p&gt;

&lt;p&gt;A maçã agora é sua! Eu não posso de entregar outra maça porque não tenho mais nenhuma. Eu não tenho controle sobre ela mais. A maçã saiu de minha posse. Agora você total controle sobre a maçã. Você pode entregar a maçã para um amigo se quiser, então o seu amigo pode entregar para o amigo dele, e por ai vai.&lt;/p&gt;

&lt;p&gt;Agora, digamos que eu tenha uma maçã digital. Vou te entregar minha maçã digital. Agora a coisa fica interessante.&lt;/p&gt;

&lt;p&gt;Como você sabe que a maçã digital que costumava ser minha, agora é sua e somente sua? Pense nisso por um instante. É um pouco mais complicado, certo? Como você sabe que eu não mandei esta maçã por email em anexo para meu tio. Ou para meu amigo João. Ou minha amiga Lua também?&lt;/p&gt;

&lt;p&gt;Talvez eu tenha feito algumas cópias daquela maçã em meu computador. Talvez eu tenha colocado a maçã para download na internet para um milhão de pessoas baixarem.&lt;/p&gt;

&lt;p&gt;Como você pode ver, essa troca digital é um problema. Enviar maçãs digitais não parece igual a enviar maçãs físicas.&lt;/p&gt;

&lt;p&gt;Aqui temos um grande problema da computação chamado “gasto duplo” ou “double-spending problem”.&lt;/p&gt;

&lt;p&gt;Uma solução para este problema séria fazer um registro da troca em um livro digital. Assim alguém rastreia nossas maçãs e podemos ficar mais tranquilos, problema resolvido!&lt;/p&gt;

&lt;p&gt;Ainda temos dois problemas aqui:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Alguém em posse do livro digital, pode criar quantas maçãs quiser.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Não é a mesma coisa que o nosso dia no parque Ibirapuera onde só estávamos você e eu. Alguém com controle do livro é como colocar um Juiz no meio de nossa troca.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mas como eu posso trocar minha maçã digital com você desta maneira usual?&lt;/p&gt;

&lt;p&gt;E se eu desse este livro para todo mundo? No lugar do livro ficar com apenas umas pessoa, ele estaria na computador de todo mundo. Todas as trocas que já aconteceram, de todos os tempos, em maçãs digitais, serão gravados nele.&lt;/p&gt;

&lt;p&gt;Você não pode enganar, Eu não posso enviar maçãs que eu não tenho, porque então não seria capaz de sincronizar com todas as outras pessoas no sistema. Seria um sistema difícil de vencer. Especialmente se ficar muito grande.&lt;/p&gt;

&lt;p&gt;Ainda mais, não é controlado por uma única pessoa, então eu sei que ninguém pode decidir por dar mais maçãs digitais a si mesmo. As regras do sistema já foram definidas no inicio.&lt;/p&gt;

&lt;p&gt;E os códigos e regras são abertos, você pode participar da rede também — atualizando o livro e certificando-se de que tudo fosse feito. Para o problema, você poderia obter 25 maçãs digitais como recompensa. Na verdade, essa é a única maneira de criar mais maçãs digitais no sistema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criptografia e mineração
&lt;/h2&gt;

&lt;p&gt;Bom, até aqui entendemos o conceito da cadeia de blocos, mas onde entra a tão famosa ideia de “Minerador” e como a criptografia ajuda no sistema para que pessoas estranhas possam se confiar?&lt;/p&gt;

&lt;p&gt;Seguindo a linha da troca de maça no livro digital, cada folha do livro, vamos chamar de bloco, é onde contem algumas trocas registradas. Cada bloco do livro contem um &lt;a href="https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_hash" rel="noopener noreferrer"&gt;hash&lt;/a&gt;(resultado de um algoritmo que representa o arquivo total mas em um tamanho determinado) do bloco anterior, criando uma corrente de blocos(Blockchain), entre outras informações, para que seja calculado uma nova hash.&lt;/p&gt;

&lt;p&gt;Para um novo bloco entrar no livro, precisa ser feito uma conta matemática, que apesar de simples(&lt;a href="http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html" rel="noopener noreferrer"&gt;Minerando bitcoin na mão&lt;/a&gt;), leva um tempo para ser feita, por isso o computador consegue fazer bem mais rápido.&lt;/p&gt;

&lt;p&gt;A cada 10 minutos, a rede do Bitcoin altera os valores desta conta matemática, deixando a aleatoriedade escolher qual computador vai conseguir fazer está conta primeiro. Estes computadores que ficam o dia todo dedicado a fazer esta conta, chamamos de “Mineradores” e a cada bloco minerado, eles ganham uma recompensa, para que o poder de processamento continue valendo a pena.&lt;/p&gt;

&lt;p&gt;Agora, se todos da rede precisassem fazer esta conta, provavelmente o Bitcoin não teria crescido tanto, é por isso que o algoritmo de calculo do bloco é demorado, mas o calculo de verificação é um pouco mais rápido. Assim, depois que algum computador encontrar o calculo do bloco, os outros apenas precisam validar esta conta.&lt;/p&gt;

&lt;p&gt;Vamos imaginar um artista plástico, que precisa criar um cor para seu quadro com misturas de outras cores. Ele ainda só visualiza a cor que quer chegar nessa mistura em sua cabeça, por isso ele precisa testar muitas vezes até chegar ao resultado esperado, do mesmo jeito é a arte de calcular um novo bloco. Mas depois que o artista chega a cor desejada e aplica a sua obra, quando ele precisar desta nova cor, ele já terá uma referencia, ele não anotou a quantidade de cores que precisa para chegar no resultado, mas com a referencia, fica muito mais fácil ir testando até chegar na cor igual. Então quando temos um bloco já calculado, fica mais fácil fazer a conta de verificação, já que o resultado tem que ser verdadeiro ou falso. Caso seja falso, o bloco não entra na cadeia e alguém ainda tem que calcular o valor real do bloco. Caso verdadeiro, os outros computadores da rede podem adicionar o bloco a sua cadeia.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Zero to 4
&lt;/h2&gt;

&lt;p&gt;Agora que você entendeu como funciona o Blockchain, vamos trazer mais novidades. Apesar de que o Blockchain é um conceito e termos variantes de todos os tipos, usamos um versionamento para dizer em qual época de ideias estamos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blockchain 1.0
&lt;/h3&gt;

&lt;p&gt;O começo de tudo, ou pelo menos quando as coisas se juntaram e tomaram forma, o Bitcoin. O primeiro exemplo de blockchain para cryptomoedas, uma forma de registro de trocar e transações financeiras. O tempo do &lt;em&gt;dinheiro da internet.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Blockchain 2.0
&lt;/h3&gt;

&lt;p&gt;Chamem os Robodivogados, chegou a onda dos Smart Contracts. Contratos inteligentes, registrados no blockchain para serem executados de modo autônomo. Neste campo, o blockchain do Ethereum é um dos mais utilizados para criar Smart Contracts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blockchain 3.0
&lt;/h3&gt;

&lt;p&gt;Até este momento, os Smart Contracts eram escritos como linguagens de programação, se deu bem o Advogado que aprendeu a programar em algum curso por ai. Outras pessoas não conseguiam interagir com esses novos contratos, foi ai que surgiu os Dapps, Decentralized Applications, que nada mais é que um sistema que utiliza os Smart Contracts como back-end, e tem uma camada de front-end para o usuário comum conseguir interagir com o blockchain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blockchain 4.0
&lt;/h3&gt;

&lt;p&gt;Aqui temos um match com um outro conceito novo, a Industria 4.0, onde você utiliza IoT para conectar as maquinas de industrias a rede. Juntando Cryptomoedas, Dapps e IoT chegamos a nova fase do blockchain.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>eli5</category>
    </item>
  </channel>
</rss>
