
Servidor FTP honeypot escrito en .NET Core (C#) tanto para Linux como para Windows.
BearFTP es un servidor FTP honeypot, diseñado para registrar los intentos de los hackers y reportarlos a bases de datos públicas de listas negras de IP.
Este software fue probado y funciona perfectamente en:
Utilizamos varios proyectos como dependencias para que todo funcione sin problemas:
BearFTP requiere .NET Core 3.1 o superior.
Descarga los binarios desde la pestaña Release o compílalo tú mismo.
Si estás en Windows, ejecuta
C:/BearFTP/BearFTP/bin/Release/netcoreapp3.1> ./BearFTP.exe
Para Linux, ejecuta
$ dotnet BearFTP.dll
El programa debería salir con un error. Procede a editar el config.json
{
"PortDef": 21,
"PortPasv": 21,
"Hostname": "127.0.0.1",
"Banner": "My very own FTP server located at %host%",
"Token": "",
"Report": true,
"Ban": true,
"PunishScans": true,
"AllowAnonymous": false,
"PerIPLogs": false,
"AnonStat": true,
"ConsoleLogging": true,
"ActiveMode": true,
"Max_PerSecond": 5,
"Max_Total": 6,
"BanLength": 3600,
"MaxErrors": 6,
"BufferSize": 8192,
"MaxThreads": 50,
"Files": [
{
"Name": "readme.txt",
"Content": "Hello!"
}]
}
Para que funcione, debes cambiar PortPasv a cualquier otro valor, de modo que PortPasv no sea igual a PortDef. Las demás opciones son opcionales. ¡Recomendamos encarecidamente no usar archivos de más de 4 MB! ¡No debes usar el honeypot como un servidor FTP real para compartir archivos!
¿Quieres contribuir? ¡Genial!
Usamos VS2019 y .NET Core 3.1 para el desarrollo.
Aquí está nuestra lista de tareas ACTUAL:
| Key | Value |
|---|
| PortDef | Reemplaza con el puerto que quieras usar para nuevas conexiones (21 por defecto) |
| PortPasv | Reemplaza con el puerto para el modo PASV (1222 por defecto) |
| Hostname | Reemplaza con una IPv4 pública real de tu PC/servidor. Se usa para iniciar conexiones PASV. Por favor usa IPv4, no soportamos dominios |
| Banner | Banner enviado justo después del handshake TCP. %host% será reemplazado con el hostname actual |
| Token | Token de AbuseIPDB para reportar a los malos |
| Report | ¿Debemos reportar acciones sospechosas? |
| Ban | ¿Debemos banear a los usuarios por acciones sospechosas? (El baneo dura 1 hora para evitar que la gente sea reportada dos veces) |
| PunishScans | ¿Debemos banear/reportar a los escáneres de nmap? |
| AllowAnonymous | ¿Debemos permitir que los usuarios inicien sesión con el nombre de usuario "anonymous"? |
| PerIPLogs | Crear registros para IPs individuales. Requiere la carpeta "iplogs" |
| AnonStat | ¿Quieres enviar estadísticas anónimas sobre el uso de la versión? (Solo vemos la versión de BearFTP que usas. Sin info privada) |
| ConsoleLogging | ¿Debemos registrar los intentos en la consola? |
| ActiveMode | ¿Debemos permitir el uso del modo Activo? (comando PORT) |
| Max_PerSecond | Cantidad máxima de conexiones por segundo desde una IP. Solo se aplica al socket base |
| Max_Total | Cantidad máxima de conexiones activas desde una IP. Se aplica tanto a la base como a PASV |
| BanLength | Duración (en segundos) de un baneo. 3600 segundos = 1 hora. |
| MaxErrors | Cantidad máxima de intentos de ejecutar un comando FTP inválido. |
| BufferSize | Tamaño del búfer en RETR para archivos. Alrededor de 2048-8192 está bien. Determina la velocidad de una descarga. |
| MaxThreads | Cantidad máxima de hilos, controlados por los clientes, que puede generar BearFTP |
| Files[] | Matriz de archivos. |
| Files[Name] | Nombre del archivo |
| Files[Content] | Contenido de los archivos (cadena). Comienza con --- para cargarlo desde un archivo (ejemplo: "---file.exe") |