<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Informações Básicas
**Seccomp** ou modo de Computação Segura, em resumo, é um recurso do kernel do **Linux** que pode atuar como **filtro de syscall**.
**seccomp** (abreviação de **modo de computação segura**) é uma facilidade de segurança de computador no **kernel do Linux**. seccomp permite que um processo faça uma transição unidirecional para um estado "seguro" onde **não pode fazer nenhuma chamada de sistema exceto**`exit()`, `sigreturn()`, `read()` e `write()` para descritores de arquivo **já abertos**. Caso tente realizar qualquer outra chamada de sistema, o **kernel** irá **terminar** o **processo** com SIGKILL ou SIGSYS. Nesse sentido, ele não virtualiza os recursos do sistema, mas isola completamente o processo deles.
O modo seccomp é **ativado através da chamada de sistema `prctl(2)`** usando o argumento `PR_SET_SECCOMP`, ou (desde o kernel do Linux 3.17) através da chamada de sistema `seccomp(2)`. O modo seccomp costumava ser ativado escrevendo em um arquivo, `/proc/self/seccomp`, mas este método foi removido em favor de `prctl()`. Em algumas versões do kernel, seccomp desabilita a instrução x86 `RDTSC`, que retorna o número de ciclos do processador desde o início, usada para cronometragem de alta precisão.
**seccomp-bpf** é uma extensão do seccomp que permite **filtrar chamadas de sistema usando uma política configurável** implementada usando regras do Berkeley Packet Filter. É usado pelo OpenSSH e vsftpd, bem como pelos navegadores web Google Chrome/Chromium no Chrome OS e Linux. (Neste aspecto, seccomp-bpf alcança funcionalidade similar, mas com mais flexibilidade e melhor desempenho, em comparação com o antigo systrace—que parece não ser mais suportado para Linux.)
Neste modo, **Seccomp** só permite as syscalls `exit()`, `sigreturn()`, `read()` e `write()` para descritores de arquivo já abertos. Se qualquer outra syscall for feita, o processo é morto usando SIGKILL
**Seccomp-bpf** é suportado pelo **Docker** para restringir os **syscalls** dos contêineres, diminuindo efetivamente a área de exposição. Você pode encontrar os **syscalls bloqueados** por **padrão** em [https://docs.docker.com/engine/security/seccomp/](https://docs.docker.com/engine/security/seccomp/) e o **perfil seccomp padrão** pode ser encontrado aqui [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json).\
Você pode executar um contêiner docker com uma política **seccomp diferente** com:
Se você quiser, por exemplo, **proibir** um container de executar alguma **syscall** como `uname`, você poderia baixar o perfil padrão de [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) e simplesmente **remover a string `uname` da lista**.\
Se você quiser garantir que **algum binário não funcione dentro de um container docker**, você poderia usar strace para listar as syscalls que o binário está usando e então proibi-las.\
No seguinte exemplo, as **syscalls** de `uname` são descobertas:
Se você está usando **Docker apenas para iniciar uma aplicação**, você pode **perfilá-la** com **`strace`** e **permitir apenas as syscalls** de que ela precisa.
Inicie um container com a flag: **`--security-opt seccomp=unconfined`**
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).