Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
stringsifter — Una herramienta de aprendizaje automático que clasifica cadenas según su relevancia para el análisis de malware. | Kitploit
Herramientas/GitHubGitHub/mandiant/stringsifter
Ingeniería InversaAnálisis de MalwareAnálisis de BinariosAprendizaje Automático
GitHubmandiant/stringsifter

stringsifter

Una herramienta de aprendizaje automático que clasifica cadenas según su relevancia para el análisis de malware.

Ver Repositorio
761126hace 1 mesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

StringSifter es una herramienta de aprendizaje automático que clasifica automáticamente las cadenas según su relevancia para el análisis de malware.

Enlaces rápidos

  • Artículo técnico del blog - Learning to Rank Strings Output for Speedier Malware Analysis
  • Anuncio en el blog - Open Sourcing StringSifter
  • Charla DerbyCon - StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis
  • Lanzamientos de StringSifter en PyPi

Uso

StringSifter requiere Python versión 3.9 o posterior. Ejecuta los siguientes comandos para obtener el código, ejecutar las pruebas unitarias y usar la herramienta:

Instalación

root@kitploit:~
pip install stringsifter

Para desarrollo, usa poetry:

root@kitploit:~
git clone https://github.com/mandiant/stringsifter.git
cd stringsifter
poetry install --with dev

Ejecutar pruebas unitarias

Para ejecutar las pruebas unitarias desde el directorio de instalación de StringSifter:

root@kitploit:~
poetry run tests -v

Ejecutar desde la línea de comandos

El comando pip install instala dos scripts ejecutables, flarestrings y rank_strings, en tu entorno de Python. Cuando desarrolles desde el código fuente, usa pipenv run flarestrings y pipenv run rank_strings.

flarestrings imita las funcionalidades de strings de GNU binutils, y rank_strings acepta entrada por tubería, por ejemplo:

root@kitploit:~
flarestrings <my_sample> | rank_strings

rank_strings admite varios argumentos de línea de comandos. El argumento posicional input_strings especifica un archivo de cadenas a clasificar. Los argumentos opcionales son:

Las cadenas clasificadas se escriben en la salida estándar, a menos que se especifique la opción --batch, en cuyo caso las salidas clasificadas se escriben en archivos llamados <input_file>.ranked_strings.

flarestrings admite una opción -n (o --min-len) para imprimir secuencias de caracteres que tengan al menos min-len caracteres de longitud, en lugar del valor predeterminado de 4. Por ejemplo:

root@kitploit:~
flarestrings -n 8 <my_sample> | rank_strings

imprimirá y clasificará solo las cadenas de longitud 8 o mayor.

Ejecutar desde un contenedor Docker

  • Después de clonar el repositorio, construye el contenedor. Desde el directorio de nivel superior del paquete:
root@kitploit:~
docker build -t stringsifter -f docker/Dockerfile .
  • Ejecuta el contenedor con el argumento flarestrings o rank_strings para usar el comando respectivo. Los comandos contenerizados se pueden usar en tuberías:
root@kitploit:~
cat <my_sample> | docker run -i stringsifter flarestrings | docker run -i stringsifter rank_strings
  • O ejecuta el contenedor sin argumentos para obtener un prompt de shell, usando la bandera -v para exponer un directorio del host al contenedor:
root@kitploit:~
docker run -v <my_malware>:/samples -it stringsifter

donde <my_malware> contiene muestras para el análisis, por ejemplo:

root@kitploit:~
docker run -v $HOME/malware/binaries:/samples -it stringsifter
  • En el prompt del contenedor:
root@kitploit:~
flarestrings /samples/<my_sample> | rank_strings <options>

Todos los argumentos de línea de comandos son compatibles con los scripts contenerizados.

Ejecutar sobre la salida de FLOSS

StringSifter se puede aplicar a listas arbitrarias de cadenas, lo que lo hace útil para los profesionales que buscan obtener información de fuentes alternativas de recopilación de inteligencia, como volcados de memoria en vivo, ejecuciones en sandbox o binarios que contienen cadenas ofuscadas. Por ejemplo, FireEye Labs Obfuscated Strings Solver (FLOSS) extrae cadenas imprimibles igual que Strings, pero además revela cadenas ofuscadas que han sido codificadas, empaquetadas o construidas manualmente en la pila. Se puede usar como reemplazo directo de Strings, lo que significa que StringSifter también se puede invocar sobre la salida de FLOSS usando el siguiente comando:

root@kitploit:~
$PY2_VENV/bin/floss –q <options> <my_sample> | rank_strings <options>

Notas:

  1. El argumento –q suprime los encabezados y el formato para mostrar solo las cadenas extraídas. Para obtener más información sobre las opciones adicionales de FLOSS, consulta sus Documentos de uso.
  2. FLOSS requiere Python 2, mientras que StringSifter requiere Python 3. En el comando de ejemplo, al menos uno de floss o rank_strings debe incluir una ruta relativa que haga referencia a un entorno virtual de Python.
  3. FLOSS se puede descargar como un ejecutable independiente. En ese caso, no es necesario especificar un entorno de Python porque el ejecutable no depende de un intérprete de Python.

Notas sobre la ejecución de strings

Esta distribución incluye el programa flarestrings para garantizar una salida predecible en todas las plataformas. Si eliges ejecutar el strings instalado en tu sistema, ten en cuenta que sus opciones no son consistentes entre versiones y plataformas:

Linux

La mayoría de las distribuciones de Linux incluyen el programa strings de GNU Binutils. Para extraer cadenas "anchas" y "estrechas", el programa debe ejecutarse dos veces, redirigiendo a un archivo de salida:

root@kitploit:~
strings <my_sample>       > strs.txt   # cadenas estrechas
strings -el <my_sample>  >> strs.txt   # cadenas anchas. nota el ">>"

MacOS

Algunas versiones de BSD strings incluidas con MacOS no admiten cadenas anchas. También ten en cuenta que la opción -a de strings para escanear el archivo completo puede estar deshabilitada en la configuración predeterminada. Sin -a, se pueden perder cadenas informativas. Recomendamos instalar GNU Binutils mediante Homebrew o MacPorts para obtener una versión de strings que admita caracteres anchos. Ten cuidado de invocar la versión correcta de strings.

Windows

strings no está instalado por defecto en Windows. Recomendamos instalar Windows Sysinternals, Cygwin o Malcode Analyst Pack para obtener un strings funcional.

Discusión

Esta versión de StringSifter se entrenó usando salidas de Strings de binarios de malware muestreados asociados con el primer conjunto de datos EMBER. Las etiquetas ordinales se generaron mediante procedimientos de supervisión débil, y el aprendizaje supervisado se realiza con Gradient Boosted Decision Trees con una función objetivo de aprendizaje para clasificar (learning-to-rank). Consulta Enlaces rápidos para obtener más detalles técnicos. Ten en cuenta que actualmente no se dispone de datos etiquetados ni del código de entrenamiento, aunque podríamos reconsiderar este enfoque en futuras versiones.

Problemas

Usamos GitHub Issues para publicar errores y solicitudes de funciones.

Agradecimientos

  • Gracias a los equipos de FireEye Data Science (FDS) y FireEye Labs Reverse Engineering (FLARE) por la revisión y los comentarios.
  • StringSifter fue diseñado y desarrollado por Philip Tully (FDS), Matthew Haigh (FLARE), Jay Gibble (FLARE) y Michael Sikorski (FLARE).
  • El logotipo de StringSifter fue diseñado por Josh Langner (FLARE).
  • flarestrings se deriva de la excelente herramienta FLOSS.
Descargar herramienta
Opción
Significado
--scores (-s)Incluir las puntuaciones de clasificación en la salida
--limit (-l)Limitar la salida a las limit cadenas mejor clasificadas
--min-score (-m)Limitar la salida a cadenas con puntuación >= min-score
--batch (-b)Especificar una carpeta de salidas de strings para procesamiento por lotes