Ou para ver qual/etc/spwd.db
usuário causou a alteração do aviso de segurança ?
Estou lendo este guia que me permite criar uma política SELinux personalizada para um aplicativo e restringir o acesso irrestrito aos arquivos do sistema do kernel.
Na Etapa 9, preciso adicionar uma regra ao arquivo Type Enforcement (mydaemon.te) e reconstruir e reinstalar a política executando o script mydaemon.sh . Infelizmente, me deparei com um ERRO 'tipo desconhecido var_log_t' no token ';' como mostrado abaixo.
[ec2-user@ip-172-31-6-46 ~]$ sudo ./mydaemon.sh
Building and Loading Policy
+ make -f /usr/share/selinux/devel/Makefile mydaemon.pp
Compiling targeted mydaemon module
mydaemon.te:26:ERROR 'unknown type var_log_t' at token ';' on line 4010:
allow mydaemon_t var_log_t:file { open write getattr };
/usr/bin/checkmodule: error(s) encountered while parsing configuration
make: *** [/usr/share/selinux/devel/include/Makefile:157: tmp/mydaemon.mod] Error 1
+ exit
Tentei usar outro tipo como var_t , mas também não funcionou.
Eu corro:
gpg --list-keys
Eu recebo:
pub rsa1024 2014-01-26 [C]
<REMOVED>
uid [ unknown] Totally Legit Signing Key <[email protected]>
Isso pode ser perigoso? O que é isso? O endereço [email protegido] é confuso.
Preciso executar um aplicativo C++ proprietário no Linux e preciso entender se ele contém alguma função fora dos recursos anunciados.
Existe uma maneira de listar todas as chamadas de API que o aplicativo faz, desde que não use syscalls do Linux e use apenas funções padrão stdc++?
Uma pergunta semelhante foi feita há quase uma década e a resposta não é nada satisfatória para mim. Preciso de algo totalmente automatizado.
Gosto nano
e uso muito. Um aplicativo relacionado é o rnano
.
Do rnano
manual:
DESCRIPTION
rnano runs the nano editor in restricted mode. This allows editing
only the specified file or files, and doesn't allow the user access to
the filesystem nor to a command shell.
In restricted mode, nano will:
• not allow suspending;
• not allow saving the current buffer under a different name;
• not allow inserting another file or opening a new buffer;
• not allow appending or prepending to any file;
• not make backup files nor do spell checking.
Quando devo usar rnano
?
Estou usando o KVM Qemu no host Kali Linux e tentando praticar a falsificação de ARP. No Kali Linux (que está conectado à rede Ethernet com fio), defini a seguinte configuração (a partir dos tutoriais que segui) para /etc/network/interfaces
configurar minhas VMs KVM para usar o modo de rede em ponte.
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.10.12
broadcast 192.168.10.255
netmask 255.255.255.0
gateway 192.168.10.1
bridge_ports eth0
bridge_stp off
bridge_waitport 0
bridge fd 0
Para fornecer mais informações, a seguir está o resultado da execução ip a
em minha máquina host:
└─$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether 10:7b:44:35:45:29 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 56:1b:f4:e4:1e:67 brd ff:ff:ff:ff:ff:ff permaddr 34:f6:4b:ff:c2:01
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 10:7b:44:35:45:29 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.12/24 brd 192.168.10.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::127b:44ff:fe35:4529/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:07:00:25 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
6: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:d6:07:c1 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fed6:7c1/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
7: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:f4:dd:55 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fef4:dd55/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
Agora, ao criar minha VM KVM, configurei-a para usar o modo de rede em ponte , como pode ser visto na captura de tela a seguir.
Então dentro da VM, dei a ela o IP estático 192.168.10.301
fazendo a seguinte configuração no /etc/network/interfaces
arquivo:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
#The primary network interface
allow-hotplug enp1s0
iface enp1s0 inet static
address 192.168.10.30
netmask 255.255.255.0
gateway 192.168.10.1
Tanto o host quanto a VM podem executar ping um no outro . No entanto, quando tento executar arpspoof
na sudo arpspoof -i eth0 -t 192.168.10.30 192.168.10.1
máquina host, recebo arpspoof: couldn't arp for host 192.168.10.30
. A questão é por que e o que devo fazer para consertar isso?
O QUE EU TENTEI:
É claro que tentei pesquisar antes de postar aqui e encontrei vários resultados, inclusive os deste fórum, mas eram para VMWare ou Virtual Box, e o OP tentaria em diferentes sub-redes ou não seria o modo de ponte de networking etc. Eu cuidei de todas essas coisas.
Hoje recebi um alerta do AlibabaCloud que libprocesshider.so
está instalado no meu servidor bastion. Eles me disseram que é um rootkit backdoor.
Pesquisei um pouco e descobri que libprocesshider.so
geralmente é usado para ocultar processos backdoor e é uma prática comum adicionar o módulo ao /etc/ld.so.preload
, e de fato foi adicionado ao meu servidor.
Questões:
Posso rastrear todos os processos ocultos que foram executados com o módulo libprocesshider?
Como posso rastrear os danos causados em meus servidores? Pesquisei
journalctl
,/var/log/secure
ehistory
, mas não encontrei nenhum traço de ataque.A sessão instalada
libprocesshider.so
ainda está ativa. Acho que a sessão foi sequestrada/roubada de um usuário remoto legítimo. Como a pessoa não está conectada ao servidor bastion. Devo encerrar a sessão o mais rápido possível ou posso rastrear algumas informações dela?Existe uma chance de que
libprocesshider.so
foi instalado automaticamente por um aplicativo não-malware?
Sinta-se à vontade para perguntar se precisar de mais informações.
Estou tentando proteger minha instalação do Apache2 no meu servidor Ubuntu 22.04, usando regras OWASP com ModSecurity, mas quando instalei as regras v3.3.4 e ativei o modsecurity, o Apache2 não inicia.
Pacotes instalados:
apache2 2.4.52-1ubuntu4.3
apache2-bin 2.4.52-1ubuntu4.3
apache2-data 2.4.52-1ubuntu4.3
apache2-dev 2.4.52-1ubuntu4.3
apache2-utils 2.4.52-1ubuntu4.3
apachetop 0.19.7-3
libapache2-mod-perl2 2.0.12-1build1
libapache2-mod-php 2:8.2+93+ubuntu22.04.1+deb.sury.org+2
libapache2-mod-php8.1 8.1.16+repack-1+ubuntu22.04.1+deb.sury.org+1
libapache2-mod-php8.2 8.2.3-1+ubuntu22.04.1+deb.sury.org+1
libapache2-mod-security2 2.9.5-1
libapache2-mod-wsgi 4.6.8-1ubuntu3.1
libapache2-reload-perl 0.13-3
python3-certbot-apache 1.21.0-1
libpcre16-3:amd64 2:8.39-13ubuntu0.22.04.1
libpcre2-16-0:amd64 10.40-1+ubuntu22.04.1+deb.sury.org+1
libpcre2-8-0:amd64 10.40-1+ubuntu22.04.1+deb.sury.org+1
libpcre3:amd64 2:8.39-13ubuntu0.22.04.1
libpcre3-dev:amd64 2:8.39-13ubuntu0.22.04.1
libpcre32-3:amd64 2:8.39-13ubuntu0.22.04.1
libpcrecpp0v5:amd64 2:8.39-13ubuntu0.22.04.1
Regras instaladas:
https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.4.tar.gz
Eu tenho isso no log de erros do apache:
systemd[1]: Starting The Apache HTTP Server...
apachectl[632035]: AH00526: Syntax error on line 43 of /etc/modsecurity/rules/REQUEST-922-MULTIPART-ATTACK.conf:
apachectl[632035]: Error creating rule: Unknown variable: &MULTIPART_PART_HEADERS
apachectl[632032]: Action 'start' failed.
apachectl[632032]: The Apache error log may have more information.
systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE
systemd[1]: apache2.service: Failed with result 'exit-code'.
Feb 17 14:33:40 belleville systemd[1]: Failed to start The Apache HTTP Server.
Aqui está o arquivo e as linhas em questão:
1 # ------------------------------------------------------------------------
2 # OWASP ModSecurity Core Rule Set ver.3.3.4
3 # Copyright (c) 2006-2020 Trustwave and contributors. All rights reserved.
4 # Copyright (c) 2021-2022 Core Rule Set project. All rights reserved.
5 #
6 # The OWASP ModSecurity Core Rule Set is distributed under
7 # Apache Software License (ASL) version 2
8 # Please see the enclosed LICENSE file for full details.
9 # ------------------------------------------------------------------------
10
11 #
12 # -= Paranoia Level 0 (empty) =- (apply unconditionally)
13 #
14
15 # This file is to address the 3UWMWA6W vulnerability.
16 # It requires ModSecurity version 2.9.6 or 3.0.8 (or an updated version with backports
17 # of the security fixes in these versions) or a compatible engine supporting these changes.
18 #
19 # If you cannot upgrade ModSecurity, this file will cause ModSecurity to fail to start.
20 # In that case, you can temporarily delete this file. However, you will be missing
21 # protection from these rules. Therefore, we recommend upgrading your engine instead.
22
23 # The rules in this file will be part of the 920 / 921 in the future.
24
25 # Only allow specific charsets when using "_charset_"
26 # Note: this is in phase:2 because these are headers that come in the body
27 SecRule &MULTIPART_PART_HEADERS:_charset_ "!@eq 0" \
28 "id:922100,\
29 phase:2,\
30 block,\
31 t:none,\
32 msg:'Multipart content type global _charset_ definition is not allowed by policy',\
33 logdata:'Matched Data: %{ARGS._charset_}',\
34 tag:'application-multi',\
35 tag:'language-multi',\
36 tag:'platform-multi',\
37 tag:'attack-multipart-header',\
38 tag:'OWASP_CRS',\
39 tag:'capec/1000/255/153',\
40 tag:'paranoia-level/1',\
41 ver:'OWASP_CRS/3.3.4',\
42 severity:'CRITICAL',\
43 chain"
44 SecRule ARGS:_charset_ "!@within |%{tx.allowed_request_content_type_charset}|" \
45 "t:lowercase,\
46 setvar:'tx.anomaly_score_pl1=+%{tx.critical_anomaly_score}'"
47
(Exemplo de captura de tela tirada de https://askubuntu.com/questions/1343872/ubuntu-shows-other-users-are-logged-in-whenever-i-shut-down-even-though-i-am-the )
Mas minha pergunta é: como o sistema sabe disso? Eu fiz
sudo chmod o-r /var/run/utmp
sudo chmod o-r /var/log/wtmp
E verifiquei que meu usuário não pode executar w
ou who
mais: a saída do comando está vazia devido à permissão de leitura negada em utmp e wtmp.
Então, como o sistema sabe disso? Onde está vazando a informação?
Atualmente, estou fazendo uma aula de SO usando XINU, onde posso controlar todos os processos em execução no SO e, por causa disso, posso prever completamente a saída de seu gerador de números aleatórios. Aqui está o código.
Está claro para mim que mesmo essa abordagem simples, quando usada em um sistema operacional de desktop, seria capaz de criar números verdadeiramente aleatórios porque há muitos processos se comportando de maneira diferente com base no usuário, local ou hora. No entanto, e na inicialização, antes que haja qualquer entrada do usuário?
O gerador de números aleatórios criptográficos do Linux é muito mais complexo, mas ainda parece depender da entrada do usuário. O OpenSSH é executado na inicialização em muitos sistemas Linux. Tenho certeza de que existem muitas empresas que executam configurações muito próximas do estoque, e se você pode simular o mesmo hardware, software e definir o mesmo horário e local do servidor que está atacando, você não poderia explorar isso?
Há também implantações pré-fabricadas em muitos serviços de hospedagem onde os desenvolvedores podem fazer upload de seu código (dockerfile, projeto ruby on rails, etc), e o servidor apenas o configura. Esses servidores têm software pré-fabricado, hardware conhecido, localização e hora. Estou assumindo que eles têm aleatoriedade de hardware no mundo real, mas e se eles não tivessem?