Sistema de Arquivos no Linux - Permissão especial para arquivos - Parte 16
Aula 24 · GNU/Linux para Servidores
Transcrição do áudio
Vou explicar agora o que é 7uid, 7gid e stickbeat ativado com permissão especial é a coleguinha, porque a maioria dos livros morrem no r, w e x apenas. Mas vou explicar direitinho o porque isso aqui é tão bem e tão ruim ao mesmo tempo, coleguinha. Isso aqui sendo utilizado por um mal machuca gostoso. Então vamos lá, vamos pegar aqui um sistema de arquivos, olha só, estou em um Debian 13, vamos lá. Alterado, esse Debian 13 não é o Debian 13, esse é o Debian 13 do QPS, é diferente. Vamos lá, cd barra-bin, aqui legal, aqui eu dou um comando ls, beleza, e aí ele listou para mim aqui o que tem do barra-bin. Eu pego algumas coisas em vermelho, está vendo? Por que será? Por que será o sudo, o su... Olha, isso aqui é laranja, por que o passo WD, monte, um monte, estranho, não tem nada de estranho, vou desenhar para vocês. Cadê o sudo? O sudo? Ah, está na ordem de colunas, sudo, alchend, laranja, que merda é essa? Então vamos lá, o ssh agent, beleza, vamos lá, ls clear, ls traçuel, tá? Então, onde eu estou? ssh e, entre outras coisas. Legal, isso aqui é um executável clássico, tá? O ssh, preste atenção, ó. Ele vai ser executado, na verdade, desculpe, ele pode ser executado pelo dono dele, quem é o dono dele? O root, ele pode ser executado pelo grupo dono, é o grupo root, e ele pode ser executado por outros, legal. Ele pode ser executado por outros, então qualquer pessoa poderia chegar aqui e executar o comando ssh. Lá do capítulo 15 para frente, eu falo sobre esse comando, legal? Vamos lá, beleza. O que ficou impacto dessa coisa toda? Então vamos lá, ó, mesmo ele sendo do root, preste atenção. Então vamos dizer que ele é do root, mas quem está rodando é o user, certo? É o user, tá, então está aqui, né? O seu ssh, o seu ssh, preste atenção, ele é um executável, tá? Ele é um executável, e ele consegue naturalmente manipular arquivos com o que está no diretório.ssh, certo? Aí lá dentro, gente, tem um monte de arquivos, tá? Ele coloca vários arquivos lá. Veja, preste atenção, quando você executa esse comando, ele manipula arquivos do usuário que está executando o comando. Então não dá problema nenhum. Então vou dizer, ele está marcado aqui para ser executável por qualquer um, deixa eu colocar aqui como um. Ó, qualquer um pode executar, mas quando essa pessoa executar, quando as pessoas executarem, vai executar naturalmente no contexto dele. Se mexer nos arquivos que é dele, não tem problema, vai funcionar. Tá claro? Então legal. Tá. Legal. Bom, vamos ver outro comando aqui. Tá? Aí nós já vamos voltar nesse cara aqui. Esse traço, ele é ponto barra sul, vasterisco. Olha só, desculpei, galera. Estou morrendo, gente. Proveita o curso enquanto podem, pergutem. Olha o comando sudo. Tá vendo o comando sudo? Repare. Já vou explicar o que é esse aqui, tá? Repare, o dono pode executar, o grupo pode executar e os outros podem executar. Também. Isso eu quero ter um graçazinho aqui, né? Beleza? Ah, por que isso? Vou explicar para você. O comando sul, o comando sul, ele vai alterar arquivos barrar barra logo. Tá? Por que? Você está fazendo uma substituição de usuário. Preste atenção. Isso aqui não quer dizer S e U de superusuário. Tem nada a ver. O nome desse comando é substituição de usuário. Não é você ir para a superusuária, para substituição de usuário comum. É lógico que o root, ele acaba sendo um usuário. Tá? Então, aquele vai mexer com vários arquivos. Só que esse diretório barra barra barra logo, esse cara aqui, opa, esse diretório, só pode ser manipulado, só pode ser manipulado. Pelo root. Então, preste atenção. Mesmo que você dá a permissão para qualquer um zerroela, qualquer um zerroela executar o comando, esse comando, ele manipula esse diretório, que é do root. E adivinha que vai acontecer? Vai dar pau, vai dar pau de permissão de acesso. Entender a merda? Vai dar pau. Hmm, isso gera um problema. Isso geraria um problema no mundo Linux, que somente o root poderia fazer as coisas. Todo usuário comum não faria nada. Nada, nada, nada, nada. Poxa cara, então isso requer permissão especial, certo? Então vamos ver como eles resolveram esse problema usando permissões especiais. Vamos voltar para o texto. Bom, então para resolver esse problema, os caras criaram a ideia de alguns bits a mais no sistema de permissão de acesso, e que, naturalmente, por exemplo, vamos pegar o SiteWeed. Se esse bit estiver ativo, esse bit está nativo, quer dizer que, digamos que eu sou o João, certo? E Maria é a dona do programa. Então eu sou o João. Quando eu executo o comando um programa que é da Maria e está com o idio ativado, quer dizer que esse programa vai rodar como se eu fosse a Maria. Entender a jogada? Então dá para extrapolar isso para o root. Então, mesma coisa, eu sou João. O programa é do root. Então se eu executo um programa do root, em que esse programa está com o idio ativado, esse programa vai rodar como se eu fosse o root. Mas é o programa, então ele teria acesso aos arquivos e às áreas que o root poderia ter acesso. Enxergou o caminho do mal? É, coleguinha, pode acontecer uma coisa bem sinistra aí. Então, pessoal, olha só, puxei aqui o CyberKill Framework. Olha só, quando o hacker entra numa máquina, um servidor, ele vai então fazer uma preparação do ambiente dele, certo? Então aqui, quando ele se instala na máquina, ele tem que abrir mais vulnerabilidades, porque o procedimento que ele utilizou para chegar até aqui pode ser, como eu posso dizer, percebido por ferramentas. Então, esse caminho fechado. Então ele abre mais vulnerabilidades. Entenderam? Entenderam. Aqui no Mitre e Attack, são duas visões diferentes, tá? O CyberKill Framework e o Mitre Attack. No Mitre Attack, seria aqui em persistência. Aí ele falaria e explicaria aqui em persistência. Então você utilizar permissões especiais para você se manter persistente, deixando mais vulnerabilidades. Ou, às vezes, os caras vacilam e dão essas permissões especiais em programas que não poderiam ter permissão especial, tá? Como, por exemplo, o Sys... Sys... Sys... Desculpa. Sys... Sys... Sys... Sys... Desculpa. Esse cara aqui, jamais ele poderia ter permissão especial, porque esse cara consegue executar scripts na área do trabalho. Você quer ver alguém que também não poderia ter? BESCH. BESCH. Tá? SH... Tá? SH, que é o Dash. Da Ashe, desculpa. Da Ashe não é Dash. Da Ashe é o Isis, carai. Foi mal aí, galera. Então, reparem, tem programas que não deveriam ter. E tem os caras que fazem essas merdas. Então, se esses caras tiverem, por exemplo, como StickerBeat de usuário ativo, vamos dar uma olhada no cyberkill framework, o hacker poderia fazer escalar privilégios, esse item aqui. Tá bom? Mas digamos que o hacker escalou privilégios, ele já tá como superusuário, então ele pode tudo, e ele tem que abrir e se manter persistente no ambiente, conforme eu falei, então, certo? Então, o que ele vai fazer? Vai dar permissão de 7uid de prens cara, 7uid de pese cara, 7uid de pese cara, vai dar 7uid de pese cara aqui dentro do barra-bim, que pode, no futuro, ter e descobrir o buraco, parar e fechar o buraco, mas o hacker deixou outros buracos e outros modos de entrar no sistema. Por isso que depois que o hacker entra, acabou, cara. Não tem esse negócio de atualizar o ambiente, essa porra não, cara. Praticamente, você vai ter que recriar tudo. Quando o Sorlauind foi atacado, gente, e acessou NSA, CIA, FBI, tá? Os caras tiveram que recriar uma rede física em paralelo. Física foi brutal pros caras, entendeu? Não tô dizendo que na sua empresa você vai ter que fazer isso, mas pense, é impossível dizer que o hacker alterou. Não é impossível. Esquece, esquece, esquece, tá? Esquece, é possível. Então, eu estou vendo aqui, naturalmente, um escudo muito grande ao utilizar esses comandos, né? Desculpa, essa é a opção do Linux, que é pelo comando CHmod. Então, comando seria então, conforme eu já falei, olha só. Quer ver? Tá aqui, né? Legal, ó, o sudo, qualquer pessoa pode utilizar o sudo, certo? O sudo, porque tá aqui o S aqui. Esse aqui é qualquer pessoa poder executar, e o S do usuário, né? Aqui, ó, então, eu poderia simplesmente chegar aqui e fazer o seguinte, ó. Sudo CHmod, o menos S, ponto barra, su, né? Eu poderia simplesmente vir aqui e negar que as pessoas fizessem isso, legal? Quer dizer que ninguém pode trocar mais a sessão, ó. Porque mesmo que as outras pessoas possam executar, substituir o seu usuário, ó. Mesmo que as pessoas possam executar, né? Ele falha, ele falha miserávelmente. Por que ele falha? Porque o suo manipula arquivos do log do sistema e log do sistema é do root. Só que como eu tirei o S daqui, não pode. Vou voltar. Vou voltar. Voltei, né? Então, aí, ele me deixou agora. Entenderam? Porque se você olhar, existe. Opa! Se você agora olhar, eu voltei pro S, com S pra cá. Viram? Então, aconteceu. Deu certo. Beleza? Isso é bom. Pra mim isso é bom. Logo, né? Não tem cadeira aqui, hein, galera? Ninguém quer do lado das trevas, não. Então, você utiliza o mais pra adicionar e o menos pra remover essa permissão especial. Tá bom? Praticamente tudo que eu falei ali. Nenhuma imagem. Bom, e o jeito de grupo e usuário-dono, owner. O owner, usuário-dono e o grupo. Quer dizer que se você olhar aqui no meu sistema de arquivos, eu tenho um grupo que vê SSH. Esse cara aqui, ó. Ó. Galera, eu tô morrendo, hein? Compre o curso, hein? Tá vendo aqui, ó. R, R, traço S. Tá vendo que o S tá no grupo? Quer dizer que quando esse comando for executado, ele vai ser executado com a permissão de acesso desse grupo. Então ele vai usar esse grupo, mesmo você não estando nesse grupo, pra rodar esse processo. Tá? Desculpe esse programa que vai virar um processo. Então é só, tá vendo? Esse grupo aqui, é de grupo, tá? Ah, entendi. Se eu remover, naturalmente, o SSH gente vai tentar ser executado com o seu grupo e vai dar pau. Porque você não tá nesse grupo SSH gente. Ah, não sei que você se coloca no SSH, gente. Aí é outro assunto. Tá? Mas o meu aqui, SSH, qualquer pessoa pode usar o SSH. Ah, gente tá aqui, tá ok? Então vamos lá, vou mostrar pra vocês. Imagina um diretório. Imagina um diretório. Ao de qualquer pessoa, pode escrever arquivos aqui dentro. Qualquer pessoa. João, Maria, José. Ah, pode escrever arquivo aí dentro. Certo? Mas, os arquivos que o João colocar dentro, só o João pode acessar. E os arquivos que Maria colocar dentro, só Maria pode acessar. Ou o root, lógico. Vamos tirar o root da história. Porque o root pode tudo praticamente, né? Quase tudo. Legal? Putz cara. Que permissão é essa? Então eles criaram um bit ativo para order. Para diretórios. Esse é válido para diretórios, tá? LS, traço, L, raiz. Se você olhar, tem um T aqui, ó. Repare, todo mundo pode tudo naquele diretório. Tá? Mas, os outros colocam arquivos, mas só eles podem acessar seus próprios arquivos. Repare esse Tzinho ali, ó. Tá? Então, se você, por exemplo, barra CD, por meu diretório, LS. Legal? Digamos que eu tivesse aqui um diretório chamado MKD público. LS, tá aqui público. Aí eu posso, né? CHMOD, né? O mais T público, né? CHMOD, caramba. CHMOD, certo? Como ele tá na minha área de usuário, eu não preciso do sudo. Porque eu tô na minha área de usuário. Peste atenção. Na minha área de usuário posso fazer as coisas. LS, traço, L. Se você olhar o público aqui, ó, ele tá com um T. Mas os orders não podem escrever nile aqui. Então nós podemos também chegar aqui e falar. Legal? Os outros também podem escrever. E agora, olha só. Os outros podem escrever. Quem escrever é dele, tá? Mas eu posso tudo sobre aquele diretório. Então, João, Mari e José colocariam arquivos ali. João, só mexer no seus arquivos. Mari é só um dos seus arquivos. Mas eu como dono, posso tudo aqui, ó. Eu como dono, posso tudo. Por isso que aqui no TMP o root pode tudo que eu falei pra vocês, ó. Tá vendo, ó? O root. Tá vendo aqui? O root pode tudo em TMP. Os outros podem pôr arquivos, cada um é do teu arquivo, apenas. Beleza? Essa jogadinha aqui, cara, ajudou pra caramba. Ater esses diretórios de arquivos temporários, cache, de sistemas. Muito bom, cara. Tá? Legal. Próxima aula, nós vamos falar de link simbólico. Até lá, até mais. Tchau.