contente
prefácio
Este artigo estuda uma ferramenta que suporta múltiplos agentes, nps
github: https://github.com/ehang-io/nps
I. Visão geral
1. Introdução
Escrito em 2018, atualizado continuamente, escrito em Go, suporta vários protocolos, possui GUI
- Requer privilégios de administrador
- Suporte abrangente a protocolos: tcp, udp, http(s), socks5, p2p, proxy http...
- Compatível com todas as plataformas (linux, windows, macos, Qunhui, etc.), suporte a instalação com um clique como um serviço do sistema
- Controle abrangente, com suporte para controle do lado do servidor e do lado do cliente
- Integração HTTPS, suporta a conversão de proxies de back-end e serviços da web para HTTPS e suporta vários certificados ao mesmo tempo
- Operação simples, o resto pode ser feito na interface do usuário da web com uma configuração simples
- Informações de exibição abrangentes, tráfego, informações do sistema, largura de banda em tempo real, versão do cliente, etc.
- A função de extensão é poderosa e tem tudo (cache, compactação, criptografia, limite de tráfego, limite de largura de banda, multiplexação de portas etc.)
- A resolução de nome de domínio tem funções como cabeçalho personalizado, configuração de página 404, modificação de host, proteção de site, roteamento de URL e resolução panorâmica.
- O servidor suporta funções de registro multiusuário e de usuário
2. Princípio
O conteúdo é muito rico, é uma grande coleção
3. Uso
Veja o site oficial: https://ehang-io.github.io/nps/#/
(1) Servidor
nps/conf/nps.conf
instalação do arquivo de configuração
- Para linux|darwin:
sudo ./nps install
- Para windows, execute cmd como administrador para entrar no diretório de instalação
nps.exe install
comece
- Para linux|darwin:
sudo nps start
- Para Windows, execute cmd como administrador para entrar no diretório do programa:
nps.exe start
Após a instalação, o arquivo de configuração do Windows está localizado em C:\Program Files\nps
,linux和darwin位于/etc/nps
pare e reinicie disponível, pare e reinicie
- servidor de acesso
ip:web服务端口(默认为8080)
- Faça login com nome de usuário e senha (padrão admin/123, deve ser alterado para uso oficial)
- Criar um cliente
(2) Cliente
Você pode configurá-lo diretamente no servidor sem um arquivo de configuração e depois executar o comando no cliente
./npc -server=ip:port -vkey=web界面中显示的密钥
Você também pode definir um arquivo de configuração, que possui mais funções, consulte o site oficial
2. Prática
1. Cenário de teste
Atacante (servidor): kali 192.168.10.128
Alvo (cliente): Ubuntu 192.168.10.129
2. Estabeleça um túnel
(1) Servidor
O arquivo de configuração tem muito conteúdo, modifique-o conforme necessário
appname = nps
#Boot mode(dev|pro)
runmode = dev
#HTTP(S) proxy port, no startup if empty
http_proxy_ip=0.0.0.0
http_proxy_port=80
https_proxy_port=443
https_just_proxy=true
#default https certificate setting
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key
##bridge
bridge_type=tcp
bridge_port=8024
bridge_ip=0.0.0.0
# Public password, which clients can use to connect to the server
# After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file.
public_vkey=123
#Traffic data persistence interval(minute)
#Ignorance means no persistence
#flow_store_interval=1
# log level LevelEmergency->0 LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7
log_level=7
#log_path=nps.log
#Whether to restrict IP access, true or false or ignore
#ip_limit=true
#p2p
#p2p_ip=127.0.0.1
#p2p_port=6000
#web
web_host=a.o.com
web_username=kali
web_password=kali
web_port = 8080
web_ip=0.0.0.0
web_base_url=
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.key
# if web under proxy use sub path. like http://host/nps need this.
#web_base_url=/nps
#Web API unauthenticated IP address(the len of auth_crypt_key must be 16)
#Remove comments if needed
#auth_key=test
auth_crypt_key =1234567812345678
#allow_ports=9001-9009,10001,11000-12000
#Web management multi-user login
allow_user_login=false
allow_user_register=false
allow_user_change_username=false
#extension
allow_flow_limit=false
allow_rate_limit=false
allow_tunnel_num_limit=false
allow_local_proxy=false
allow_connection_num_limit=false
allow_multi_ip=false
system_info_display=false
#cache
http_cache=false
http_cache_length=100
#get origin ip
http_add_origin_header=false
#pprof debug options
#pprof_ip=0.0.0.0
#pprof_port=9999
#client disconnect timeout
disconnect_timeout=60
Instalar
./nps install
comece
nps start
Faça o login (você vai se ajoelhar quando vir essa interface, é muito forte)
para configurar um cliente e
clique no túnel na imagem acima
(2) Cliente
comece
./npc -server=192.168.10.128:8024 -vkey=nfzp2xp2n742ge3h -type=tcp
(3) Estabelecimento do túnel
Mostrar conexão
Você pode fazer proxy do tráfego para a porta 1080 definida acima através de proxychains
3. Dê uma olhada no pacote
estabelecer conexão
Há informações como tempo de retorno, versão, etc.
Pacote Heartbeat
3. Explorar
1. Código-fonte e análise
Muito grande e perfeito para um aprendizado aprofundado
2. Detecção e desvio
(1) Arquivo de configuração
Acho que é para aprender frp, existe um arquivo de configuração, um grande identificador
Bypass: escreve no programa
(2) Comportamento do terminal
portas, comportamento do software, processos, strings de assinatura, assinaturas, etc.
(3) Características do tráfego
Pacotes de batimentos cardíacos, etc.
Epílogo
ferramenta muito poderosa