{"id":22204,"date":"2025-03-07T00:05:00","date_gmt":"2025-03-07T03:05:00","guid":{"rendered":"https:\/\/www.ethicalhacker.com.br\/site\/?p=22204"},"modified":"2025-02-26T18:27:39","modified_gmt":"2025-02-26T21:27:39","slug":"forense-digital-com-linux-tecnicas-praticas-parte-13","status":"publish","type":"post","link":"https:\/\/www.ethicalhacker.com.br\/site\/2025\/03\/exploits\/forense-digital-com-linux-tecnicas-praticas-parte-13\/","title":{"rendered":"Forense Digital com Linux &#8211; T\u00e9cnicas Pr\u00e1ticas &#8211; Parte 13"},"content":{"rendered":"\n<p><strong>An\u00e1lise Forense com Express\u00f5es Regulares no Linux: Identificando altera\u00e7\u00f5es em sistemas comprometidos<\/strong><\/p>\n<p style=\"text-align: justify;\">A an\u00e1lise forense digital \u00e9 fundamental para identificar atividades maliciosas em sistemas comprometidos. Uma das t\u00e9cnicas mais eficazes para detectar altera\u00e7\u00f5es suspeitas \u2014 como arquivos criados, exclu\u00eddos, modifica\u00e7\u00f5es em diret\u00f3rios ou adultera\u00e7\u00e3o de logs \u2014 \u00e9 o uso de\u00a0<strong>express\u00f5es regulares (regex)<\/strong>\u00a0combinadas com ferramentas nativas do Linux. Neste artigo, vamos explorar como aplicar regex para investigar mudan\u00e7as em uma m\u00e1quina potencialmente comprometida, passo a passo.<\/p>\n<h3>\u00a0<\/h3>\n<p><strong>1. Introdu\u00e7\u00e3o ao cen\u00e1rio<\/strong><\/p>\n<p style=\"text-align: justify;\">Suponha que uma m\u00e1quina Linux esteja apresentando comportamentos an\u00f4malos: alto uso de recursos, arquivos desconhecidos ou logs inconsistentes. O objetivo \u00e9 utilizar express\u00f5es regulares para:<\/p>\n<ul>\n<li>\n<p>Identificar arquivos criados ou modificados recentemente.<\/p>\n<\/li>\n<li>\n<p>Detectar exclus\u00f5es de arquivos cr\u00edticos.<\/p>\n<\/li>\n<li>\n<p>Analisar altera\u00e7\u00f5es em diret\u00f3rios sens\u00edveis.<\/p>\n<\/li>\n<li>\n<p>Investigar logs adulterados.<\/p>\n<\/li>\n<\/ul>\n<h3>\u00a0<\/h3>\n<p><strong>2. Identificando arquivos criados ou modificados<\/strong><\/p>\n<p style=\"text-align: justify;\">Arquivos maliciosos s\u00e3o frequentemente criados ou modificados durante um ataque. Para localizar arquivos alterados nos \u00faltimos 7 dias, use o comando\u00a0<code>find<\/code> com regex:<\/p>\n<div class=\"md-code-block\">\n<pre><strong><span class=\"token function\">find<\/span> \/ <span class=\"token parameter variable\">-type<\/span> f <span class=\"token parameter variable\">-mtime<\/span> <span class=\"token parameter variable\">-7<\/span> <span class=\"token parameter variable\">-regextype<\/span> posix-extended <span class=\"token parameter variable\">-regex<\/span> <span class=\"token string\">\".*\\.(sh|py|conf|log)$\"<\/span><\/strong><\/pre>\n<\/div>\n<ul>\n<li>\n<p><strong>Explica\u00e7\u00e3o:<\/strong><\/p>\n<ul>\n<li>\n<p><code>-mtime -7<\/code>: Filtra arquivos modificados nos \u00faltimos 7 dias.<\/p>\n<\/li>\n<li>\n<p><code>-regex \".*\\.(sh|py|conf|log)$\"<\/code>: Busca arquivos com extens\u00f5es comumente alvo de ataques (<em>.sh<\/em>,\u00a0<em>.py<\/em>,\u00a0<em>.conf<\/em>,\u00a0<em>.log<\/em>).<\/p>\n<\/li>\n<li>\n<p>Use\u00a0<code>-exec ls -l {} \\;<\/code>\u00a0para listar detalhes como permiss\u00f5es e propriet\u00e1rios.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Exemplo de Sa\u00edda:<\/strong><\/p>\n<div class=\"md-code-block\">\n<pre><strong>-rwxr-xr-x 1 root root 1024 Jun 10 15:30 \/var\/log\/.hidden_script.sh<\/strong>  <br \/><br \/><\/pre>\n<\/div>\n<p>Arquivos ocultos em\u00a0<code>\/var\/log<\/code>\u00a0ou com permiss\u00f5es incomuns (ex:\u00a0<code>777<\/code>) devem ser investigados.<\/p>\n<h3>\u00a0<\/h3>\n<p><strong>3. Detectando exclus\u00f5es de arquivos<\/strong><\/p>\n<p style=\"text-align: justify;\">Logs do sistema, como\u00a0<code>\/var\/log\/syslog<\/code>\u00a0ou\u00a0<code>\/var\/log\/auth.log<\/code>, registram opera\u00e7\u00f5es de exclus\u00e3o. Use\u00a0<code>grep<\/code>\u00a0com regex para buscar entradas relacionadas ao comando\u00a0<code>rm<\/code>:<\/p>\n<p style=\"text-align: justify;\"><strong><span class=\"token function\" style=\"color: #1e1e1e; font-family: Menlo, Consolas, monaco, monospace; font-size: 15px; white-space-collapse: preserve;\">grep<\/span> <span class=\"token parameter variable\" style=\"color: #1e1e1e; font-family: Menlo, Consolas, monaco, monospace; font-size: 15px; white-space-collapse: preserve;\">-E<\/span> <span class=\"token string\" style=\"color: #1e1e1e; font-family: Menlo, Consolas, monaco, monospace; font-size: 15px; white-space-collapse: preserve;\">&#8220;rm -[rf]|unlink&#8221;<\/span><\/strong><span style=\"color: #1e1e1e; font-family: Menlo, Consolas, monaco, monospace; font-size: 15px; white-space-collapse: preserve;\"><strong> \/var\/log\/syslog<\/strong> <\/span><\/p>\n<ul>\n<li>\n<p><strong>Regex:<\/strong>\u00a0<code>rm -[rf]|unlink<\/code>\u00a0captura comandos de exclus\u00e3o recursiva (<code>-r<\/code>) ou for\u00e7ada (<code>-f<\/code>).<\/p>\n<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p><strong>Padr\u00e3o Suspeito:<\/strong><\/p>\n<div class=\"md-code-block\">\n<pre><strong>Jun 10 14:45 user: root COMMAND=\/usr\/bin\/rm -rf \/var\/www\/html\/*<\/strong> <br \/> <\/pre>\n<\/div>\n<p>Exclus\u00f5es em massa em diret\u00f3rios cr\u00edticos (ex:\u00a0<code>\/var\/www<\/code>) podem indicar atividade maliciosa.<\/p>\n<p>\u00a0<\/p>\n<p><strong>4. Analisando altera\u00e7\u00f5es em diret\u00f3rios<\/strong><\/p>\n<p style=\"text-align: justify;\">Diret\u00f3rios como\u00a0<code>\/etc<\/code>,\u00a0<code>\/bin<\/code>, ou\u00a0<code>\/home<\/code>\u00a0s\u00e3o alvos comuns. Para listar altera\u00e7\u00f5es recentes em\u00a0<code>\/etc<\/code>, combine\u00a0<code>ls<\/code>\u00a0com regex:<\/p>\n<div class=\"md-code-block\">\n<div class=\"md-code-block-banner-wrap\">\n<div class=\"md-code-block-banner\">\u00a0<\/div>\n<\/div>\n<pre><strong><span class=\"token function\">ls<\/span> <span class=\"token parameter variable\">-lt<\/span> \/etc <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">\"Jun [0-9]{2} (14|15|16):[0-9]{2}\"<\/span>  <\/strong><\/pre>\n<\/div>\n<ul>\n<li>\n<p><strong>Regex:<\/strong>\u00a0<code>Jun [0-9]{2} (14|15|16):[0-9]{2}<\/code>\u00a0filtra arquivos modificados entre 14h e 16h no m\u00eas de junho.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Casos de Aten\u00e7\u00e3o:<\/strong><\/p>\n<ul>\n<li>\n<p>Arquivos de configura\u00e7\u00e3o modificados fora de janelas de manuten\u00e7\u00e3o (ex:\u00a0<code>\/etc\/passwd<\/code>).<\/p>\n<\/li>\n<li>\n<p>Novos diret\u00f3rios ocultos (ex:\u00a0<code>\/etc\/.backdoor<\/code>).<\/p>\n<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p><strong>5. Investigando logs adulterados<\/strong><\/p>\n<p style=\"text-align: justify;\">Ataques frequentemente incluem a adultera\u00e7\u00e3o de logs para apagar evid\u00eancias. Use regex para identificar lacunas ou inconsist\u00eancias:<\/p>\n<p>\u00a0<\/p>\n<p><strong>5.1. Verificando Lacunas Temporais<\/strong><\/p>\n<div class=\"md-code-block\">\n<pre><strong><span class=\"token function\">cat<\/span> \/var\/log\/auth.log <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">\"Jun [0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\"<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">awk<\/span> <br \/><span class=\"token string\">'{print $1,$2,$3}'<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">uniq<\/span> <span class=\"token parameter variable\">-c<\/span> <\/strong> <\/pre>\n<\/div>\n<ul>\n<li>\n<p><strong>Regex:<\/strong>\u00a0<code>Jun [0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}<\/code>\u00a0captura timestamps.<\/p>\n<\/li>\n<li>\n<p><strong>Sa\u00edda Suspeita:<\/strong>\u00a0Intervalos de tempo ausentes (ex: logs das 02:00 \u00e0s 04:00 apagados).<\/p>\n<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p><strong>5.2. Buscando padr\u00f5es de ataque<\/strong><\/p>\n<p>Para detectar tentativas de inje\u00e7\u00e3o de comandos em logs do Apache (<code>\/var\/log\/apache2\/access.log<\/code>):<\/p>\n<div class=\"md-code-block\">\n<pre><strong><span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">\"union select|&lt;?php|wget|curl\"<\/span> \/var\/log\/apache2\/access.log<\/strong>  <\/pre>\n<\/div>\n<ul>\n<li>\n<p><strong>Regex:<\/strong>\u00a0<code>union select|&lt;?php|wget|curl<\/code>\u00a0identifica tentativas de explora\u00e7\u00e3o via SQLi ou download de payloads.<\/p>\n<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p><strong>6. Monitorando Atividades com Auditd<\/strong><\/p>\n<p style=\"text-align: justify;\">O framework\u00a0<code>auditd<\/code>\u00a0registra altera\u00e7\u00f5es em tempo real. Para rastrear acesso ao diret\u00f3rio\u00a0<code>\/bin<\/code>, configure uma regra:<\/p>\n<div class=\"md-code-block\">\n<pre><strong>auditctl <span class=\"token parameter variable\">-w<\/span> \/bin <span class=\"token parameter variable\">-p<\/span> war <span class=\"token parameter variable\">-k<\/span> system_binaries<\/strong>  <br \/><br \/><\/pre>\n<\/div>\n<ul>\n<li>\n<p><strong>An\u00e1lise dos Logs:<\/strong><\/p>\n<\/li>\n<\/ul>\n<div class=\"md-code-block\">\n<div class=\"md-code-block-banner-wrap\">\n<div class=\"md-code-block-banner\">\u00a0<\/div>\n<\/div>\n<pre><strong>ausearch <span class=\"token parameter variable\">-k<\/span> system_binaries <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> <span class=\"token parameter variable\">-E<\/span> <span class=\"token string\">\"execve|rename|unlink\"<\/span> <\/strong> <\/pre>\n<\/div>\n<ul>\n<li>\n<p><strong>Regex:<\/strong>\u00a0<code>execve|rename|unlink<\/code>\u00a0filtra opera\u00e7\u00f5es de execu\u00e7\u00e3o, renomea\u00e7\u00e3o ou exclus\u00e3o.<\/p>\n<\/li>\n<\/ul>\n<h3>\u00a0<\/h3>\n<p><strong>7. Conclus\u00e3o<\/strong><\/p>\n<p style=\"text-align: justify;\">Express\u00f5es regulares s\u00e3o indispens\u00e1veis na an\u00e1lise forense para filtrar grandes volumes de dados e identificar padr\u00f5es sutis de comprometimento. Ao combinar regex com ferramentas como\u00a0<code>find<\/code>,\u00a0<code>grep<\/code>,\u00a0<code>awk<\/code>\u00a0e\u00a0<code>auditd<\/code>, \u00e9 poss\u00edvel:<\/p>\n<ul>\n<li>\n<p>Detectar arquivos maliciosos criados ou modificados.<\/p>\n<\/li>\n<li>\n<p>Identificar exclus\u00f5es n\u00e3o autorizadas.<\/p>\n<\/li>\n<li>\n<p>Correlacionar eventos em logs adulterados.<\/p>\n<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">No entanto, a an\u00e1lise forense exige uma abordagem hol\u00edstica: valide sempre os resultados com m\u00faltiplas ferramentas (ex:\u00a0<code>stat<\/code>,\u00a0<code>md5sum<\/code>) e documente todas as evid\u00eancias para garantir a integridade do processo.<\/p>\n<p>\u00a0<\/p>\n<p><strong>Refer\u00eancias Bibliogr\u00e1ficas<\/strong><\/p>\n<ul>\n<li>\n<p>Robbins, A. (2005).\u00a0<em>Unix in a Nutshell<\/em>. O&#8217;Reilly Media.<\/p>\n<\/li>\n<li>\n<p>Friedl, J. E. F. (2006).\u00a0<em>Mastering Regular Expressions<\/em>. O&#8217;Reilly Media.<\/p>\n<\/li>\n<li>\n<p>Nikkel, B. (2021).\u00a0<em>Practical Linux Forensics: A Guide for Digital Investigators<\/em>. No Starch Press.<\/p>\n<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Estas obras fornecem bases t\u00e9cnicas aprofundadas sobre express\u00f5es regulares, ferramentas Linux e metodologias de an\u00e1lise forense, complementando os exemplos pr\u00e1ticos deste artigo.<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>An\u00e1lise Forense com Express\u00f5es Regulares no Linux: Identificando altera\u00e7\u00f5es em sistemas comprometidos A an\u00e1lise forense digital \u00e9 fundamental para identificar atividades maliciosas em sistemas comprometidos. Uma das t\u00e9cnicas mais eficazes para detectar altera\u00e7\u00f5es suspeitas \u2014 como arquivos criados, exclu\u00eddos, modifica\u00e7\u00f5es em diret\u00f3rios ou adultera\u00e7\u00e3o de logs \u2014 \u00e9 o uso de\u00a0express\u00f5es regulares (regex)\u00a0combinadas com ferramentas [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":22196,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[89,100,21],"tags":[],"class_list":["post-22204","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-basico","category-diversos","category-exploits"],"_links":{"self":[{"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/posts\/22204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/comments?post=22204"}],"version-history":[{"count":4,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/posts\/22204\/revisions"}],"predecessor-version":[{"id":22208,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/posts\/22204\/revisions\/22208"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/media\/22196"}],"wp:attachment":[{"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/media?parent=22204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/categories?post=22204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/tags?post=22204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}