O processo de compilação e linking

Por Mateus Santos Softwares são compostos, em sua maioria, por códigos próprios, escritos pelo programador daquele software, e por códigos de bibliotecas, feito por outros programadores. Bibliotecas podem ser entendidas como códigos já escritos, reusáveis, que fornecem implementações de funções a serem utilizadas por diversos outros programas. Por exemplo, uma biblioteca de matemática fornece funções que podem ser utilizadas por um programa simples de somar dois números, um software de calculadora ou até mesmo programas para auxiliar estudos científicos em áreas que dependem de precisão de várias casas decimais.

MalDev - 0x00

Por Igor Benevides Introduction Hello! My name is Igor and I’m a professional cybersecurity consultant and researcher. I currently own OSEP certification, and I’m going through OSED. I love to study about cybersecurity and I’m a part of the RSI (Residência da Segurança da Informação) project, which is an extension project for UFC (Universidade Federal do Ceará). The goal of this new series is to teach malware development for anyone interested in this theme.

Kubernetes Network Policies

Por Isaias do Carmo Introdução Kubernetes possui várias camadas de comunicação e prover segurança através de todas essas camadas pode se tornar uma tarefa árdua. Um dos desafios é o estabelecimento de um ambiente de isolamento no qual clusters, pods e namespaces possam se comunicar entre si, aplicando o conceitos como zero trust e defesa em profundidade. Este artigo explora a implementação de Network Policies no Kubernetes, concentrando-se nas melhores práticas através de cenários práticos.

Native DLL Injection Using LoadLibrary - Parte 04

Por Davi Chaves O processo de injeção nativa de uma dll em um processo é bastante semelhante ao método convencional utilizando as funções da kernel32.dll. A lógica é exatamente igual: NTSTATUS NtProcessStartup(PPEB peb) { // Abre o processo alvo NtOpenProcess(...); // Alocamos um pouco de memória no processo alvo NtAllocateVirtualMemory(...); // Escrevemos o nome da nossa dll na memória do processo alvo NtWriteVirtualMemory(...); // Pegamos o endereço da função LoadLibraryW LdrGetProcedureAddress("LoadLibraryW".

SIGMA Rules Introduction - Parte 01

Por Davi Chaves Table of Contents SIGMA Rules - Parte 01 - Introduction Tipos de regras SIGMA Funcionamento Escrevendo uma SIGMA Rule Campo Logsource Campo Detection Selection Condition Image, CommandLine… what are they? Modificadores Exemplo de SIGMA Rule real Conclusão Reference Anteriormente, as detecções no âmbito do SIEM eram isoladas em compartimentos específicos vinculados a fornecedores ou plataformas particulares. Parceiros que pretendiam compartilhar conteúdo de detecção muitas vezes enfrentavam o desafio de traduzir uma consulta de um fornecedor para outro.

SIGMA Rules Pipelines - Parte 02

Por Davi Chaves Table of Contents SIGMA Rules - Parte 02 - Pipelines Objetivo Exemplo Thomas Patzke The Field Naming Problem Pipelines, what are they? Specification of Pipelines Specification of Transformations 1. field_name_mapping 1. add_condition Specification of Conditions RuleProcessingCondition Exemplo: LogsourceCondition DetectionItemProcessingCondition FieldNameProcessingCondition Exemplo: ExcludeFieldCondition Mapping Process Creation Rules Forçar um mapeamento O principal objetivo das SIGMAS Rules é descrever assinaturas de logs de maneira genérica, independente de fornecedor e ambiente.

Escrevendo Aplicações Nativas para Windows - Parte 3

Por Davi Chaves O objetivo desse artigo vai ser enumerar todos os processos e, em seguida enumerar todos as threads e handles de um processo específico. NtQuerySystemInformation Essa função será usada para pegarmos quase todo tipo de informação do sistema. O primeiro parametro dela é um valor de um enum SYSTEM_INFORMATION_CLASS que vai definir que tipo de informação ela vai trazer. Abaixo a estrutura desse enum. Primeiramente, estaremos utilizando o valor SystemProcessInformation para obtermos uma lista de todos os processos.

Aplicações em Flutter

Por Ramon Martins Frida - Flutter & Kotlin - Parte 1 Essa série de artigos é sobre métodos de análise estática e dinâmica em aplicativos criados pelo framework Flutter, utilizando as linguagens Dart e Kotlin para construir aplicações para dispositivos móveis, com o sistema operacional Android. Aplicação Flutter Foi criado uma aplicação em Flutter, utilizando a linguagem Dart e Kotlin chamando funções nativas de uma lib criada em c.

Escrevendo Aplicações Nativas para Windows - Parte 2

Por Davi Chaves Até o momento, temos uma aplicação nativa, mas não conseguimos printar nada. Uma forma de construirmos essa funcionalidade seria fazer nosso processo native escrever no standard output do processo pai. Entretanto, eu acabei encontrando algumas dificuldades nessa solução. Dessa forma, vamos utilizar uma outra alternativa: criar um arquivo output.txt e escrever todos as saidas do nosso programa nele. Criando e Escrevendo em um Arquivo Para isso, vamos ter que utilizar duas APIs: NtCreateFile e NtWriteFile.

Escrevendo Aplicações Nativas para Windows - Parte 1

Por Davi Chaves O objetivo desse artigo é montarmos um binário que dependa exclusivamente da ntdll.dll. Abaixo estão algumas funções exportadas por essa biblioteca. Using Native Functions Antes de construirmos uma aplicação que dependa apenas da ntdll.dll, vamos primeiro aprender a como utilizar as funções dessa biblioteca. Primeiro Método: Dynamic Linking Como toda função exportada, podemos utilizar a função GetProcAddress para acharmos o endereço de uma certa função e chama-la quando quisermos.