Sobre mim

Minhas Habilidades

Desenvolvimento Web 90%
Analise de Malware 75%
Pentest 80%
C/C++ 70%
Python 90%
Frameworks Javascript 90%

Sobre mim

Conheça Lucas Mulato, um indivíduo jovem e talentoso, apaixonado por explorar novas tecnologias e com talento para pentesting e análise de malware. Com uma curiosidade inata por tudo relacionado à tecnologia, Lucas Mulato desenvolveu um conjunto notável de habilidades que os diferencia no mundo da segurança cibernética.

Como pentester habilidoso, Lucas possui a capacidade de identificar vulnerabilidades em sistemas de computadores, redes e aplicativos. Sua experiência reside na condução de avaliações de segurança completas, na simulação de ataques do mundo real e no fornecimento de relatórios abrangentes que ajudam as organizações a fortalecer suas defesas digitais. Com um olhar atento aos detalhes e um profundo conhecimento das mais recentes técnicas de hacking, Lucas Mulato garante que nada será deixado de lado quando se trata de proteger os ativos digitais de seus clientes.

Além disso, Lucas Mulato se destaca no intrincado campo da análise de malware. Com uma abordagem meticulosa, eles dissecam software malicioso, desvendando seu funcionamento interno e descobrindo riscos e vulnerabilidades potenciais. Ao compreender o comportamento e as capacidades do malware, ele pode desenvolver estratégias eficazes para mitigar o seu impacto e prevenir futuras infecções, salvaguardando os dados sensíveis dos seus clientes.

O que diferencia Lucas Mulato não é apenas seu conhecimento técnico, mas também seu compromisso em fornecer um serviço excepcional aos seus clientes. Com forte foco na satisfação do cliente, ele garante uma comunicação clara, entrega oportuna de resultados e uma abordagem personalizada que atende às necessidades exclusivas de cada cliente.

Ao aproveitar as habilidades e conhecimentos excepcionais do Lucas, os clientes podem esperar um parceiro confiável em seus esforços de segurança cibernética. Com um histórico de projetos de sucesso e uma reputação de entrega de resultados excelentes, ele está preparado para atrair uma base diversificada de clientes que buscam serviços freelance de alto nível. Quer se trate de pequenas empresas que procuram proteger a sua infraestrutura digital ou de organizações maiores que necessitam de testes de penetração abrangentes e análise de malware, o Lucas oferece a experiência e a dedicação necessárias para satisfazer as suas necessidades de segurança cibernética.

Baixar Cúrriculo

Educação

Educação

O mestre disse: Por natureza, os homens são próximos; a educação é que os afasta.

Ensino Médio

Tive um estudo da grade curricular nacional da forma mais mediana possivel, com a média das notas sendo 7/8, eu fui um aluno regular com quase nenhuma falta durante os 3 anos. A única matéria na qual eu me sobressaí, foi em inglês... com a nota mais baixa sendo 8. Fica claro que eu fui um aluno independente e curioso.

2018

Francisco Antunes
Filho

Ensino Técnico

Aprendi como funciona na teoria e principalmente na pratica, os hardwares de um componente computacional e ver o funcionamento dele em rede, desde a origem energetica de cada peça ao binário de um cabo coaxial até a parte da apresentação na qual o usúario interage.

2019

Manutenção de
computadores e Redes

Ensino Superior

Trabalhando e estudando eu tinha um equilibrio de vida-trabalho perfeito, contudo houve a pandemia global do covid e com alguns meses estudando e trabalhando online eu fui demitido e não pude mais pagar a faculdade particular, porém a qualidade das aulas me tornaram uma pessoa melhor, com professores comoventes e exemplos de pessoa tornaram a despedida uma das coisas mais dificil para mim, porém, segui em frente.

2020

UNIP
ADS

Ensino Técnico

Com a pandemia ainda evidente, eu ingressei em uma escola online, a proposta é tornar a pessoa programadora em um desenvolvedor Full-Stack, eu sem trabalhar aguentei estudar somente metade, me qualificando para somente o front-end...

2021

Trybe
Escola de Programação Online

Ensino Superior

Numa nova tentativa de completar o ensino superior ingressei em um EAD (Ensino á Distancia) e nisso aprendi desde design thinking, estrutura de dados até Microsserviços e Containers.

2022

UNICV
ADS

Ensinos Complementares

Durante todos esses anos passados atualmente e no futuro, tenho feito cursos complementares e adquirindo conhecimento nas áreas e praticas da qual eu mais aprecio... Desde meu inglês fluente ao meus cursos em ethical hacking. Sempre fui o maximo que se pode ser um autodidata, procurando ter um repertório em livros tanto didaticos quanto os que explora a minha criatividade e imaginação, com isso não resta dúvida de que eu estou sempre em um aprendizado.

20xx

Online

Trabalho

Trabalho

A única maneira de fazer um excelente trabalho é amar o que você faz.

Tribunal JECRIM da comarca de guarulhos

Auxiliar de promotores de justiça e juiz, lidava com a documentação de processos e arquivamento dos mesmos, além de assistir a tudo que era me requisitado.

2018

Estagiário

AlmaViva do Brasil

Na área de retenção eu atuava como um agente de cancelamento ou compra de produtos melhores para a clientela, assim sendo era exigido de mim uma boa argumentação.

2019-2020

Operador de Call Center

Via Varejo

Como ajudante de vendas na Casas Bahia, além de auxiliar o vendedor nas mais diversas tarefas eu cuidava da limpeza e decoração da loja.

2021-2022

Jovem Aprendiz

Action Call

Nesta empresa eu lidava com resolução de problemas com a internet dos mais variados provedores, sendo o suporte nivel 1, eu agendava visita de técnico ou resolvia o problema da conexão.

2022-2023

Operador de Call Center

Autonomo

Tenho experiência no trabalho Autonomo da forma mais informal até a mais formal possivel, como possivelmente ja viu em meu portifólio. Faço desde logos e banners até mesmo sites e consultória de segurança de sistemas.

20xx-2023

Freelancer

portfólio

Projetos

O ser verdadeiramente livre é aquele que consegue realizar os seus projetos.

TechBlog

Ultimos Posts

Meus pensamentos

Como usar React, GraphQL e Next.js para criar um site dinâmico e interativo

O desenvolvimento web é uma área que está sempre em evolução e buscando novas formas de criar experiências incríveis para os usuários. Neste post, vamos explorar algumas das tecnologias mais recentes e populares que podem ajudar você a criar um site dinâmico e interativo: React, GraphQL e Next.js.

As melhores práticas para um purple team eficaz em cibersegurança

O purple team é uma abordagem de cibersegurança que combina as habilidades e os objetivos das equipes ofensivas (red team) e defensivas (blue team) em uma única unidade. O purple team visa melhorar a postura de segurança de uma organização, identificando e corrigindo as vulnerabilidades, testando e aprimorando as defesas e compartilhando conhecimento e feedback entre os profissionais de segurança.

Como Eu Usei Python Para Aprender Cálculo 1 E 2

O cálculo é uma parte importante da matemática que estuda os conceitos de limite, derivada, integral e séries infinitas. O cálculo é útil para modelar fenômenos naturais, físicos e econômicos, bem como para resolver problemas complexos de ciência, engenharia e computação.

As limitações do Copilot.

Copilot é uma ferramenta de inteligência artificial que pode ajudar os desenvolvedores a escrever código de forma mais rápida e fácil. No entanto, ele tem algumas limitações que os usuários devem estar cientes e saber como lidar com elas. Copilot não garante a qualidade ou a segurança do código, não entende o contexto ou o objetivo do usuário e não pode criar código original ou inovador. Os usuários devem sempre revisar e testar o código que o Copilot sugere, fornecer ao Copilot informações sobre o seu projeto e usar o seu próprio talento para criar código excelente.

Contato

Contate me

Caso tenha algum feedback ou queira trabalhar comigo, sinta-se livre para entrar em contato comigo.

whatsapp-icon discord-icon

Descrição do projeto.

Front-end de um blog de um time de CTF.

O front-end foi feito com Jekyll para gerenciar as postagens do blog, JS e CSS para as funcionalidades interativas e estruturação com HTML.

Detalhes do Projeto

Project Description

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Project Details

Project Description

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Project Details

Project Description

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Project Details

Project Description

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Project Details

Project Description

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Project Details

Project Description

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Project Details

Project Description

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Project Details

Project Description

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Lorem ipsum Non dolor fugiat Duis irure esse eiusmod aliquip laborum dolor ea cupidatat nostrud do elit esse occaecat Duis sit.

Project Details

By: Lucas Mulato Postado: 27 Outubro 2023

Como usar React, GraphQL e Next.js para criar um site dinâmico e interativo

react-next-graphql

Como usar React, GraphQL e Next.js para criar um site dinâmico e interativo

O desenvolvimento web é uma área que está sempre em evolução e buscando novas formas de criar experiências incríveis para os usuários. Neste post, vamos explorar algumas das tecnologias mais recentes e populares que podem ajudar você a criar um site dinâmico e interativo: React, GraphQL e Next.js.

O que é React?

React é uma biblioteca JavaScript para criar interfaces de usuário. Ela permite que você crie componentes reutilizáveis que podem renderizar dados de forma declarativa e eficiente. Com React, você pode criar sites com uma arquitetura baseada em componentes, onde cada componente tem seu próprio estado e lógica. React também oferece recursos como hooks, contextos e portais para facilitar o gerenciamento de estado e a comunicação entre componentes.

O que é GraphQL?

GraphQL é uma linguagem de consulta e um sistema de execução para APIs. Ela permite que você defina o tipo e a estrutura dos dados que você quer receber do servidor, evitando o excesso ou a falta de informação. Com GraphQL, você pode fazer consultas flexíveis e eficientes, obtendo apenas os dados que você precisa para cada componente. GraphQL também facilita a manipulação de dados no lado do cliente, usando mutações e assinaturas.

O que é Next.js?

Next.js é um framework para criar sites com React. Ele oferece recursos como renderização no lado do servidor, geração estática, roteamento dinâmico, otimização de código e suporte a TypeScript. Com Next.js, você pode criar sites com alto desempenho, SEO e acessibilidade. Next.js também integra-se facilmente com GraphQL, usando bibliotecas como Apollo Client ou SWR.

Como usar React, GraphQL e Next.js juntos?

Para usar React, GraphQL e Next.js juntos, você precisa seguir alguns passos básicos:

  • Criar um projeto Next.js usando npx create-next-app ou yarn create next-app.
  • Instalar as dependências necessárias para usar GraphQL, como graphql, @apollo/client e @apollo/react-hooks.
  • Configurar o cliente Apollo para se conectar com o servidor GraphQL, usando o arquivo apolloClient.js.
  • Criar os componentes React que vão consumir os dados do GraphQL, usando os hooks useQuery e useMutation.
  • Criar as páginas Next.js que vão renderizar os componentes React, usando o método getStaticProps ou getServerSideProps para obter os dados iniciais.
  • Criar as rotas dinâmicas para as páginas Next.js, usando o arquivo [slug].js.

Exemplo de código

A seguir, vamos mostrar um exemplo simples de código que usa React, GraphQL e Next.js para criar um site que lista posts de um blog e permite adicionar novos posts.

Schema GraphQL

O schema GraphQL define os tipos de dados que podemos consultar ou manipular na API. Neste exemplo, vamos usar um tipo Post que tem os campos id, title e content. Vamos também definir duas operações: uma consulta posts que retorna uma lista de posts, e uma mutação addPost que adiciona um novo post.

type Post {
											id: ID!
											title: String!
											content: String!
											}
											type Query {
											posts: [Post!]!
											}
											type Mutation {
											addPost(title: String!, content: String!): Post!
											}
											

Servidor GraphQL

O servidor GraphQL é responsável por implementar a lógica das operações definidas no schema. Neste exemplo, vamos usar um servidor simples com Node.js e Express, usando a biblioteca express-graphql. Vamos também usar um array em memória para armazenar os posts.

const express = require('express');
											const { graphqlHTTP } = require('express-graphql');
											const { buildSchema } = require('graphql');
											// Criar o schema GraphQL
											const schema = buildSchema(`
											type Post {
												id: ID!
												title: String!
												content: String!
											}
											type Query {
												posts: [Post!]!
											}
											type Mutation {
												addPost(title: String!, content: String!): Post!
											}
											`);
											// Criar um array para armazenar os posts
											const posts = [];
											// Criar um contador para gerar os ids dos posts
											let idCount = 1;
											// Criar a raiz do servidor GraphQL
											const root = {
											// Consulta que retorna a lista de posts
											posts: () => {
												return posts;
											},
											// Mutação que adiciona um novo post
											addPost: ({ title, content }) => {
												const post = { id: idCount++, title, content };
												posts.push(post);
												return post;
											},
											};
											// Criar o app Express
											const app = express();
											// Usar o middleware graphqlHTTP para criar o endpoint GraphQL
											app.use(
											'/graphql',
											graphqlHTTP({
												schema,
												rootValue: root,
												graphiql: true,
											})
											);
											// Iniciar o servidor na porta 4000
											app.listen(4000, () => {
											console.log('Servidor GraphQL rodando na porta 4000');
											});
											

Cliente Apollo

O cliente Apollo é responsável por se conectar com o servidor GraphQL e fazer as consultas e mutações. Neste exemplo, vamos usar a biblioteca @apollo/client para criar o cliente Apollo e configurá-lo para usar o endpoint /graphql do servidor.

import { ApolloClient, InMemoryCache } from '@apollo/client';
											// Criar o cliente Apollo
											const client = new ApolloClient({
											uri: 'http://localhost:4000/graphql',
											cache: new InMemoryCache(),
											});
											export default client;
											

Componente PostList

O componente PostList é responsável por mostrar a lista de posts do blog. Neste exemplo, vamos usar o hook useQuery para fazer a consulta posts e obter os dados dos posts. Vamos também usar o componente PostItem para renderizar cada post individualmente.

import { useQuery, gql } from '@apollo/client';
											import PostItem from './PostItem';
											// Definir a consulta GraphQL para obter os posts
											const POSTS_QUERY = gql`
											query PostsQuery {
												posts {
												id
												title
												content
												}
											}
											`;
											// Criar o componente PostList
											const PostList = () => {
											// Usar o hook useQuery para fazer a consulta e obter os dados, o carregamento e o erro
											const { data, loading, error } = useQuery(POSTS_QUERY);
											// Se estiver carregando, mostrar uma mensagem de carregamento
											if (loading) return <p>Carregando...</p>;
											// Se houver um erro, mostrar uma mensagem de erro
											if (error) return <p>Erro: {error.message}</p>;
											// Se houver dados, mostrar a lista de posts usando o componente PostItem
											if (data) {
												return (
												<div>
													<h2>Lista de Posts</h2>
													<ul>
													{data.posts.map((post) => (
														<PostItem key={post.id} post={post} />
													))}
													</ul>
												</div>
												);
											}
											};
											export default PostList;
											

Componente PostItem

O componente PostItem é responsável por mostrar os detalhes de um post. Neste exemplo, vamos usar o componente Link do Next.js para criar um link para a página do post, usando o id do post como parâmetro da rota dinâmica.

import Link from 'next/link';
											// Criar o componente PostItem
											const PostItem = ({ post }) => {
											// Extrair os dados do post
											const { id, title, content } = post;
											// Retornar o elemento JSX que mostra o título e um trecho do conteúdo do post, com um link para a página do post
											return (
												<li>
												<h3>{title}</h3>
												<p>{content.substring(0, 100)}...</p>
												<Link href={`/posts/${id}`}>
													<a>Ler mais</a>
												</Link>
												</li>
											);
											};
											export default PostItem;
											

Componente PostForm

O componente PostForm é responsável por permitir que o usuário adicione um novo post ao blog. Neste exemplo, vamos usar o hook useMutation para fazer a mutação addPost e enviar os dados do novo post. Vamos também usar os hooks useState e useRef para gerenciar os dados do formulário.

import { useMutation, gql } from '@apollo/client';
												import { useState, useRef } from 'react';
												// Definir a mutação GraphQL para adicionar um novo post
												const ADD_POST_MUTATION = gql`
												mutation AddPostMutation($title: String!, $content: String!) {
													addPost(title: $title, content: $content) {
													id
													title
													content
													}
												}
												`;
												// Criar o componente PostForm
												const PostForm = () => {
												// Usar o hook useMutation para fazer a mutação e obter a função de execução e o resultado
												const [addPost, { data, loading, error }] = useMutation(ADD_POST_MUTATION);
												// Usar o hook useState para gerenciar o estado do título e do conteúdo do novo post
												const [title, setTitle] = useState('');
												const [content, setContent] = useState('');
												// Usar o hook useRef para obter as referências dos elementos do formulário
												const titleInputRef = useRef();
												const contentInputRef = useRef();
												// Criar uma função para lidar com a submissão do formulário
												const handleSubmit = (e) => {
													// Prevenir o comportamento padrão do formulário
													e.preventDefault();
													// Obter os valores dos elementos do formulário usando as referências
													const title = titleInputRef.current.value;
													const content = contentInputRef.current.value;
													// Validar os valores dos elementos do formulário
													if (!title || !content) {
													alert('Por favor, preencha todos os campos');
													return;
													}
													// Executar a mutação passando os valores como variáveis
													addPost({ variables: { title, content } });
													// Limpar os valores dos elementos do formulário
													titleInputRef.current.value = '';
													contentInputRef.current.value = '';
													// Atualizar o estado do título e do conteúdo do novo post
													setTitle('');
													setContent('');
												};
												// Retornar o elemento JSX que mostra o formulário para adicionar um novo post, com os campos de título e conteúdo e um botão de enviar
												return (
													<div>
													<h2>Adicionar um novo post</h2>
													<form onSubmit={handleSubmit}>
														<div>
														<label htmlFor="title">Título:</label>
														<input
															type="text"
															id="title"
															name="title"
															ref={titleInputRef}
															value={title}
															onChange={(e) => setTitle(e.target.value)}
														/>
														</div>
														<div>
														<label htmlFor="content">Conteúdo:</label>
														<textarea
															id="content"
															name="content"
															ref={contentInputRef}
															value={content}
															onChange={(e) => setContent(e.target.value)}
														/>
														</div>
														<button type="submit">Enviar</button>
													</form>
													{/* Se estiver carregando, mostrar uma mensagem de carregamento */}
													{loading && <p>Carregando...</p>}
													{/* Se houver um erro, mostrar uma mensagem de erro */}
													{error && <p>Erro: {error.message}</p>}
													{/* Se houver dados, mostrar uma mensagem de sucesso */}
													{data && <p>Post adicionado com sucesso!</p>}
													</div>
												);
												};
												export default PostForm;
												

Esse é o fim da explicação. Espero que tenha sido útil. Se você quiser saber mais sobre React, GraphQL e Next.js, você pode consultar os links abaixo:

Obrigado por ler o meu post. Até a próxima! 😊

Comments (0)

Leave Your Comments

By: Lucas Mulato Postado: 27 Outubro 2023

As melhores práticas para um purple team eficaz em cibersegurança


purple-team-icon

O purple team é uma abordagem de cibersegurança que combina as habilidades e os objetivos das equipes ofensivas (red team) e defensivas (blue team) em uma única unidade. O purple team visa melhorar a postura de segurança de uma organização, identificando e corrigindo as vulnerabilidades, testando e aprimorando as defesas e compartilhando conhecimento e feedback entre os profissionais de segurança.

Neste post, vamos apresentar algumas das melhores práticas para implementar e conduzir um purple team eficaz em cibersegurança, baseadas nas recomendações de especialistas da área¹²³.

Defina os objetivos e o escopo do purple team

Antes de iniciar um exercício de purple team, é importante definir os objetivos e o escopo do mesmo. Os objetivos devem estar alinhados com as necessidades e prioridades da organização, bem como com os requisitos regulatórios e normativos. O escopo deve delimitar os sistemas, redes, aplicações e dados que serão alvo do purple team, bem como os recursos, ferramentas e metodologias que serão utilizados.

Estabeleça uma comunicação clara e contínua entre o red team e o blue team

Um dos principais benefícios do purple team é a comunicação clara e contínua entre o red team e o blue team. Ao contrário dos exercícios tradicionais de red teaming ou blue teaming, onde as equipes trabalham de forma isolada e competitiva, o purple team incentiva a colaboração e a cooperação entre as equipes. Isso permite que o red team compartilhe as técnicas, táticas e procedimentos (TTPs) que utiliza para simular os ataques, bem como as evidências e os resultados que obtém. Por sua vez, o blue team compartilha as medidas de detecção, prevenção e resposta que implementa, bem como as dificuldades e os desafios que enfrenta.

A comunicação entre o red team e o blue team pode ser feita por meio de diferentes canais, como reuniões presenciais ou virtuais, chats, emails ou plataformas dedicadas. O importante é que a comunicação seja frequente, transparente e construtiva, visando o aprendizado mútuo e a melhoria contínua.

Utilize ferramentas e frameworks adequados para o purple team

O purple team requer o uso de ferramentas e frameworks adequados para facilitar a execução e a avaliação dos exercícios. Algumas das ferramentas mais utilizadas pelos profissionais de segurança são:

  • Nmap: uma ferramenta de código aberto para realizar varreduras de rede e descobrir hosts, portas, serviços e vulnerabilidades.
  • Metasploit: uma plataforma de código aberto para realizar testes de penetração e explorar vulnerabilidades.
  • Wireshark: uma ferramenta de código aberto para capturar e analisar pacotes de rede.
  • Burp Suite: uma ferramenta integrada para realizar testes de segurança em aplicações web.
  • Mimikatz: uma ferramenta para extrair credenciais do Windows, como senhas, hashes ou tickets Kerberos.
  • PowerShell Empire: uma ferramenta para criar agentes maliciosos baseados em PowerShell que podem executar comandos remotos, exfiltrar dados ou mover-se lateralmente na rede.
  • Cobalt Strike: uma ferramenta comercial para realizar operações ofensivas avançadas, como criação de beacons, spoofing de domínios ou ataques de phishing.
  • Splunk: uma plataforma comercial para coletar, indexar e analisar dados de diferentes fontes, como logs, eventos ou alertas.
  • ELK Stack: uma pilha composta por três ferramentas de código aberto: Elasticsearch (para armazenar e pesquisar dados), Logstash (para processar e enviar dados) e Kibana (para visualizar e explorar dados).
  • Snort: uma ferramenta de código aberto para detectar intrusões na rede por meio de regras baseadas em assinaturas ou anomalias.
  • Suricata: uma ferramenta de código aberto para detectar intrusões na rede por meio de regras baseadas em assinaturas ou anomalias, com suporte a análise de fluxo e detecção de malware.
  • TheHive: uma plataforma de código aberto para gerenciar incidentes de segurança, com integração com outras ferramentas como MISP, Cortex ou ElasticSearch.

Além das ferramentas, existem alguns frameworks que podem auxiliar na definição e na execução dos exercícios de purple team. Alguns dos frameworks mais utilizados são:

  • MITRE ATT&CK: um framework que descreve as TTPs utilizadas pelos adversários em diferentes fases do ciclo de vida do ataque, desde o reconhecimento até a exfiltração. O framework também fornece indicadores de comprometimento (IOCs) e técnicas de mitigação para cada TTP.
  • Cyber Kill Chain: um framework que divide o processo de ataque em sete fases: reconhecimento, armamento, entrega, exploração, instalação, comando e controle e ações nos objetivos. O framework também sugere medidas de defesa para cada fase.
  • NIST SP 800-115: um guia do Instituto Nacional de Padrões e Tecnologia (NIST) dos Estados Unidos que fornece recomendações para realizar testes de segurança técnica em sistemas de informação. O guia aborda aspectos como planejamento, execução e relatório dos testes.

Avalie e melhore os resultados do purple team

Após a realização dos exercícios de purple team, é importante avaliar e melhorar os resultados obtidos. Para isso, é recomendável seguir os seguintes passos:

  • Documentar os resultados: registrar os dados coletados durante os exercícios, como as TTPs utilizadas pelo red team, as medidas adotadas pelo blue team, as vulnerabilidades encontradas, os incidentes gerados e as evidências coletadas.
  • Analisar os resultados: analisar os dados documentados para identificar as forças e as fraquezas da organização em termos de segurança, bem como as oportunidades e as ameaças que podem afetar a sua continuidade.
  • Reportar os resultados: elaborar um relatório que sintetize os resultados da análise, destacando os principais achados, as conclusões e as recomendações para melhorar a postura de segurança da organização.
  • Implementar as recomendações: executar as ações propostas no relatório para corrigir as vulnerabilidades, reforçar as defesas e aumentar a resiliência da organização frente aos ataques cibernéticos.
  • Monitorar e revisar os resultados: acompanhar o progresso das ações implementadas e verificar se elas estão surtindo o efeito esperado. Revisar periodicamente os resultados e ajustar as recomendações conforme necessário.

Conclusão

O purple team é uma abordagem de cibersegurança que visa melhorar a segurança de uma organização por meio da colaboração entre as equipes ofensivas e defensivas. O purple team permite identificar e corrigir as vulnerabilidades, testar e aprimorar as defesas e compartilhar conhecimento e feedback entre os profissionais de segurança.

Para implementar e conduzir um purple team eficaz em cibersegurança, é importante seguir algumas boas práticas, como definir os objetivos e o escopo do exercício, estabelecer uma comunicação clara e contínua entre o red team e o blue team, utilizar ferramentas e frameworks adequados para o exercício, avaliar e melhorar os resultados obtidos.

Espero que este post tenha sido útil para você. Se você quiser saber mais sobre o purple team em cibersegurança, você pode consultar os links abaixo:

Obrigado por ler o meu post. Até a próxima! 😊

Source: Conversation with Bing, 27/10/2023 (1) What is a Purple Team? – CrowdStrike. https://www.crowdstrike.com/cybersecurity-101/purple-teaming/. (2) What Is a Purple Team in Cybersecurity? - MUO. https://www.makeuseof.com/what-is-purple-team-cybersecurity/. (3) Red, blue, and purple teams: Cybersecurity roles explained. https://www.pluralsight.com/blog/security-professional/red-team-blue-team-purple-team. (4) What is a Purple Team? – CrowdStrike. https://www.crowdstrike.com/cybersecurity-101/purple-teaming/. (5) What Is a Purple Team in Cybersecurity? - MUO. https://www.makeuseof.com/what-is-purple-team-cybersecurity/. (6) Red, blue, and purple teams: Cybersecurity roles explained. https://www.pluralsight.com/blog/security-professional/red-team-blue-team-purple-team.

Comments (0)

Leave Your Comments

Por: Lucas Mulato Postado: 28 Outubro 2023

Como eu usei Python para aprender cálculo 1 e 2


math-py

O cálculo é uma parte importante da matemática que estuda os conceitos de limite, derivada, integral e séries infinitas. O cálculo é útil para modelar fenômenos naturais, físicos e econômicos, bem como para resolver problemas complexos de ciência, engenharia e computação.

No entanto, aprender cálculo nem sempre é fácil. Muitas vezes, os alunos se deparam com dificuldades para entender os conceitos abstratos, as fórmulas complicadas e as provas rigorosas que envolvem o cálculo. Além disso, os livros e as aulas de cálculo nem sempre oferecem exemplos práticos, visuais e interativos que possam despertar o interesse e a curiosidade dos alunos.

Foi pensando nessas dificuldades que eu decidi usar Python para aprender cálculo 1 e 2. Python é uma linguagem de programação versátil e amigável que complementa o cálculo, especialmente quando se usa bibliotecas como NumPy e SymPy. Ao incorporar Python nos meus estudos de cálculo, eu pude obter uma compreensão mais profunda dos conceitos matemáticos, das provas, das visualizações e dos algoritmos.

Neste post, eu vou compartilhar com vocês como eu usei Python para aprender alguns dos tópicos mais importantes do cálculo 1 e 2, como:

  • Limites
  • Derivadas
  • Integrais
  • Séries
  • Equações diferenciais

Limites

Limites são usados para definir a continuidade, as derivadas e as integrais de uma função ou de uma sequência. Um limite expressa o comportamento de uma função ou de uma sequência quando a variável se aproxima de um determinado valor.

Para calcular limites em Python, eu usei a biblioteca SymPy, que permite manipular objetos matemáticos de forma simbólica. Com SymPy, eu pude declarar variáveis simbólicas, definir funções simbólicas e usar a função limit para obter o valor do limite.

Por exemplo, para calcular o limite da função f(x) = (x**2 - 4) / (x - 2) quando x tende a 2, eu fiz o seguinte código:

import sympy as sp
											x = sp.Symbol('x') # declarar a variável simbólica x
											f = (x**2 - 4) / (x - 2) # definir a função simbólica f
											L = sp.limit(f, x, 2) # calcular o limite de f quando x tende a 2
											print(L) # imprimir o resultado
											

O resultado foi 4, que é o valor do limite.

Eu também pude calcular limites laterais usando o argumento dir. Por exemplo, para calcular o limite da função f(x) = 1 / x quando x tende a 0 pela direita, eu fiz o seguinte código:

import sympy as sp
											x = sp.Symbol('x') # declarar a variável simbólica x
											f = 1 / x # definir a função simbólica f
											L = sp.limit(f, x, 0, dir='+') # calcular o limite de f quando x tende a 0 pela direita
											print(L) # imprimir o resultado
											

O resultado foi oo, que é o símbolo do SymPy para infinito.

Eu também pude usar o SymPy para verificar se uma função é contínua em um ponto. Uma função é contínua em um ponto se o limite da função nesse ponto é igual ao valor da função nesse ponto. Por exemplo, para verificar se a função f(x) = x**2 + 3 é contínua no ponto x = 1, eu fiz o seguinte código:

import sympy as sp
											x = sp.Symbol('x') # declarar a variável simbólica x
											f = x**2 + 3 # definir a função simbólica f
											L = sp.limit(f, x, 1) # calcular o limite de f quando x tende a 1
											V = f.subs(x, 1) # calcular o valor de f quando x é igual a 1
											print(L == V) # imprimir se o limite é igual ao valor
											

O resultado foi True, o que significa que a função é contínua no ponto x = 1.

Derivadas

Derivadas são usadas para medir a taxa de variação de uma função em relação a uma variável. Uma derivada expressa a inclinação da reta tangente ao gráfico de uma função em um ponto.

Para calcular derivadas em Python, eu usei a biblioteca SymPy, que permite manipular objetos matemáticos de forma simbólica. Com SymPy, eu pude declarar variáveis simbólicas, definir funções simbólicas e usar a função diff para obter o valor da derivada.

Por exemplo, para calcular a derivada da função f(x) = x**3 + 2*x + 1 em relação a x, eu fiz o seguinte código:

import sympy as sp
											x = sp.Symbol('x') # declarar a variável simbólica x
											f = x**3 + 2*x + 1 # definir a função simbólica f
											df = sp.diff(f, x) # calcular a derivada de f em relação a x
											print(df) # imprimir o resultado
											

O resultado foi 3*x**2 + 2, que é o valor da derivada.

Eu também pude calcular derivadas de ordem superior usando o argumento n. Por exemplo, para calcular a segunda derivada da função f(x) = x**3 + 2*x + 1 em relação a x, eu fiz o seguinte código:

import sympy as sp
											x = sp.Symbol('x') # declarar a variável simbólica x
											f = x**3 + 2*x + 1 # definir a função simbólica f
											ddf = sp.diff(f, x, 2) # calcular a segunda derivada de f em relação a x
											print(ddf) # imprimir o resultado
											

O resultado foi 6*x, que é o valor da segunda derivada.

Eu também pude usar o SymPy para verificar se uma função é derivável em um ponto. Uma função é derivável em um ponto se o limite da razão incremental da função nesse ponto existe e é finito. Por exemplo, para verificar se a função f(x) = abs(x) é derivável no ponto x = 0, eu fiz o seguinte código:

import sympy as sp
											x = sp.Symbol('x') # declarar a variável simbólica x
											f = sp.Abs(x) # definir a função simbólica f
											h = sp.Symbol('h') # declarar a variável simbólica h
											R = (f.subs(x, x + h) - f.subs(x, x)) / h # definir a razão incremental de f
											L = sp.limit(R, h, 0) # calcular o limite da razão incremental quando h tende a 0
											print(L) # imprimir o resultado
											

O resultado foi nan, que significa que o limite não existe. Isso significa que a função não é derivável no ponto x = 0.

Integrais

Integrais são usadas para calcular a área sob o gráfico de uma função em um intervalo. Uma integral expressa a soma dos valores da função multiplicados por um elemento infinitesimal de área.

Para calcular integrais em Python, eu usei a biblioteca SymPy, que permite manipular objetos matemáticos de forma simbólica. Com SymPy, eu pude declarar variáveis simbólicas, definir funções simbólicas e usar a função integrate para obter o valor da integral.

Por exemplo, para calcular a integral indefinida da função f(x) = x**2 + 2*x - 3 em relação a x, eu fiz o seguinte código:

import sympy as sp
											x = sp.Symbol('x') # declarar a variável simbólica x
											f = x**2 + 2*x - 3 # definir a função simbólica f
											F = sp.integrate(f, x) # calcular a integral indefinida de f em relação a x
											print(F) # imprimir o resultado
											

O resultado foi x**3/3 + x**2 - 3*x, que é o valor da integral indefinida.

Eu também pude calcular integrais definidas usando uma tupla como argumento. Por exemplo, para calcular a integral definida da função f(x) = x**2 + 2*x - 3 em relação a x no intervalo [0, 2], eu fiz o seguinte código:

import sympy as sp
											x = sp.Symbol('x') # declarar a variável simbólica x
											f = x**2 + 2*x - 3 # definir a função simbólica f
											I = sp.integrate(f, (x, 0, 2)) # calcular a integral definida de f em relação a x no intervalo [0, 2]
											print(I) # imprimir o resultado
											

O resultado foi 2/3, que é o valor da integral definida.

Eu também pude usar o SymPy para verificar se uma função é integrável em um intervalo. Uma função é integrável em um intervalo se o limite da soma de Riemann da função nesse intervalo existe e é finito. Por exemplo, para verificar se a função f(x) = 1 / x é integrável no intervalo [1, 2], eu fiz o seguinte código:

import sympy as sp
											x = sp.Symbol('x') # declarar a variável simbólica x
											f = 1 / x # definir a função simbólica f
											I = sp.integrate(f, (x, 1, 2)) # calcular a integral definida de f em relação a x no intervalo [1, 2]
											print(I) # imprimir o resultado
											

O resultado foi log(2), que é um valor finito. Isso significa que a função é integrável no intervalo [1, 2].

Esse é o fim da explicação sobre integrais. Espero que tenha sido útil. Se você quiser saber mais sobre cálculo em Python, você pode consultar os links abaixo:

  • [SymPy Documentation]
  • [Calculus with Python]
  • [Python for Calculus]

Obrigado por ler o meu post. Até a próxima! 😊

Comments (0)

Leave Your Comments

Por: Lucas Mulato Postado: 28 Outubro 2023

As limitações do Copilot.

copilot-icon

Copilot é uma ferramenta de inteligência artificial que ajuda os desenvolvedores a escrever código de forma mais rápida e fácil. Ele usa um grande banco de dados de código-fonte público para sugerir linhas ou funções de código que se encaixam no contexto do projeto. No entanto, Copilot não é perfeito e tem algumas limitações que os usuários devem estar cientes. Neste post, vamos discutir algumas dessas limitações e como lidar com elas.

Limitação 1: Copilot não garante a qualidade ou a segurança do código (continuação)

Para lidar com essa limitação, os usuários devem sempre revisar e testar o código que o Copilot sugere antes de usá-lo em seus projetos. Eles também devem verificar se o código está em conformidade com as leis, regulamentos e padrões éticos aplicáveis. Além disso, eles devem dar crédito aos autores originais do código, se necessário, e respeitar as licenças de uso.

Limitação 2: Copilot não entende o contexto ou o objetivo do usuário

Outra limitação do Copilot é que ele não pode entender o contexto ou o objetivo do usuário que está escrevendo o código. Copilot apenas analisa o código que está sendo escrito e tenta completá-lo com base em padrões estatísticos. Ele não sabe qual é o problema que o usuário está tentando resolver, qual é a lógica por trás do código, quais são as especificações ou requisitos do projeto, ou quais são as preferências ou expectativas do usuário. Portanto, ele pode gerar código que seja irrelevante, incompatível ou insatisfatório para o usuário.

Para lidar com essa limitação, os usuários devem fornecer ao Copilot o máximo de informações possíveis sobre o contexto e o objetivo do seu código. Eles podem usar comentários, nomes de variáveis, tipos de dados, estruturas de controle, etc., para orientar o Copilot a gerar código mais adequado. Eles também devem estar preparados para modificar ou descartar o código que o Copilot sugere se ele não atender às suas necessidades ou expectativas.

Limitação 3: Copilot não pode criar código original ou inovador

Uma terceira limitação do Copilot é que ele não pode criar código original ou inovador. Copilot é baseado em um grande banco de dados de código-fonte público que já existe na internet. Ele não pode gerar código que seja novo, diferente ou criativo. Ele apenas pode recombinar ou adaptar o código que ele já viu antes. Portanto, ele pode gerar código que seja redundante, obsoleto ou comum.

Para lidar com essa limitação, os usuários devem usar o Copilot como uma ferramenta auxiliar e não como uma fonte de inspiração. Eles devem usar o seu próprio conhecimento, experiência e imaginação para criar código original ou inovador. Eles devem usar o Copilot apenas para acelerar ou facilitar o processo de codificação, mas não para substituir ou limitar a sua criatividade.

Conclusão

Copilot é uma ferramenta de inteligência artificial que pode ajudar os desenvolvedores a escrever código de forma mais rápida e fácil. No entanto, ele tem algumas limitações que os usuários devem estar cientes e saber como lidar com elas. Copilot não garante a qualidade ou a segurança do código, não entende o contexto ou o objetivo do usuário e não pode criar código original ou inovador. Os usuários devem sempre revisar e testar o código que o Copilot sugere, fornecer ao Copilot informações sobre o seu projeto e usar o seu próprio talento para criar código excelente.

Espero que este post tenha sido útil para você. Se você tiver alguma dúvida ou comentário sobre o Copilot ou sobre este post, por favor deixe um comentário abaixo. Obrigado por ler! 😊

Comments (0)

Leave Your Comments