PhishingKitTracker – Colección de kits de Phishing para análisis forense

PhishingKitTracker es una colección ampliable y recientemente actualizada de kits de phishing para análisis forense con estadísticas simples.

Descargo de responsabilidad

Este repositorio contiene una colección de kits de phishing utilizados por los ciberdelincuentes para robar información de los usuarios. Casi todos los archivos de la carpeta raw son maliciosos. Por lo tanto, te recomiendo encarecidamente que no abras estos archivos ni utilices mal el código para bromear con tus amigos. 

Jugar con estos kits puede tener consecuencias irreversibles que pueden afectar desde datos personales hasta contraseñas e información bancaria.

No soy responsable de ningún daño causado por el malware dentro de mi repositorio y tu negligencia en general.

PhishingKitTracker se almacena en Git Large File System (git-lfs) debido a la gran cantidad de datos rastreados. Debes instalar Git-LFS antes de la clonación de este repositorio.

Datos de la carpeta RAW

En la carpeta raw se rastrean los kits de phishing en el formato original. No hay manipulación involucrada en esos datos. Un script de backend revisa los sitios web recolectados maliciosos (recolectados de fuentes comunes) y verifica si hay kits de phishing. 

En un caso positivo (si se encuentra un kit de phishing), el archivo resultante se descarga y se agrega instantáneamente a esa carpeta. El seguimiento de esta carpeta se realiza mediante Git Large File System, ya que muchos archivos tienen un tamaño superior a 100 MB. 

“RAW Data” es una tierra bastante inexplorada, encontrarás muchos temas interesantes con alta probabilidad. 

Estadísticas

En la carpeta “stats” se mantienen dos archivos actualizados:

  1. files_name contiene la frecuencia de los nombres de archivo encontrados asociados con los kits. En otras palabras, cada kit de phishing se guarda en el host de phishing con un nombre. filke_name realiza un seguimiento de cada nombre de archivo y su frecuencia. Si te preguntas por qué no estoy rastreando hashes, es porque los kits de phishing son grandes archivos comprimidos, por lo que no tendría sentido en esta etapa, ya que siempre difieren entre sí (pero consulta la carpeta src para obtener información adicional)
  2. sites Mantiene la frecuencia de los nombres de dominio de alojamiento. En otras palabras, dónde se encontró el kit de phishing. No se realiza un seguimiento de los duplicados, lo que significa que la frecuencia y los nombres de los archivos son únicos. Por ejemplo, si ves algo como: 3 li.humanbiomics-project.org significa que en li.humanbiomics-project.org se han encontrado tres kits de phishing diferentes a lo largo del tiempo. Ambos archivos se han generado mediante simples scripts bash como:
ls raw/ | cut -d'_' -f1 | uniq -c | sort -bgr > stats/sites.txt
ls raw/ | cut -d'_' -f2 | uniq -c | sort -bgr > stats/files_name.txt

Estos scripts se ejecutan en cada confirmación, creando archivos en línea con la raw.

Por otro lado, un archivo llamado similarity.csv se proporciona con un retraso tremendo debido a la gran cantidad de tiempo que lleva generarlo. Ese archivo proporciona la similitud entre los kits de phishing rastreados. Es un archivo CSV simple para que puedas importarlo en tu hoja de cálculo favorita y hacer gráficos, estadísticas o manipularlo de la forma que prefieras.

Estructura de SIMILARITY.CSV

 La estructura de similitud es como la siguiente: FileA,FileB,SimilarityAVG,SimilarityMin,SimilarityMax donde:

  • FileA es el kit de phishing que se considera en ese análisis.
  • FileB es kit de phishing que se compara con el kit de phishing FileA
  • SimilarityAVG es el promedio en similitud. Ese promedio se deduce calculando la verificación de similitud de cada archivo (interesante) en el archivo kit de phishing (FileA) con cada archivo (interesante) en el archivo kit de phishing que se va a comparar (FileB)
  • SimilarityMin es el valor de similitud más bajo encontrado entre kit de phishing A y kit de phishing B
  • SimilarityMax es el valor de similitud más alto encontrado entre kit de phishing A y kit de phishing B

Si deseas generar similarity.csv por tu cuenta, te proporciono un script simple y en la carpeta src. Hasta ahora tiene varias limitaciones (por ejemplo, solo calcula archivos ZIP). 

SRC

Debes verificar esas variables (compute_similarity.py) y cambiarlas a tu gusto.

EXTENSION_FOR_ANALYSIS = ['.html','.js','.vbs','.xls','.xlsm','.doc','.docm', '.ps1']
OUTPUT_FILE =  'similarity.csv'                                                 
RAW_FOLDER = '/tmp/raw/'                                                        
TEMP_FOLDER = '/tmp/tt'     

Una vez que las hayas cambiado, puedes ejecutar el script y descansar un rato. Navegará a través del RAW_FOLDER, tomará los archivos .zip e intentará calcular la similitud de código entre ellos. Al final, guardará los resultados en OUTPUT_FILE. A partir de ahí puedes importar un archivo de este tipo a tu procesador de hojas de cálculo favorito y elaborar la similitud del código.

Cómo contribuir

Aquí tienes el script para diferentes formatos de compresión. En otras palabras, si quieres contribuir puedes escribir una nueva sección como la siguiente (code_similarity.py) pero para diferentes extensiones de compresión como: .tar.gz, .tar, .rar. /7z y así sucesivamente.

# Extracts Zip files based on EXTENSION_FOR_ANALYSIS. It returns the etire file
# path for future works
def extractZipAndReturnsIntereistingFiles(file_to_extract):
    interesting_files = []
    n_interesting_files = []
    try:
        with ZipFile(file_to_extract, 'r') as zipObj:
            listOfFileNames = zipObj.namelist()
            for fileName in listOfFileNames:
                for ext in EXTENSION_FOR_ANALYSIS:
                    if fileName.endswith(ext):
                        try:
                            zipObj.extract(fileName, TEMP_FOLDER)
                            interesting_files.append(os.path.join(TEMP_FOLDER, fileName))
                        except Exception as e:
                            continue
                    else:
                        n_interesting_files.append(os.path.join(TEMP_FOLDER, fileName))
    except Exception as e :
        return interesting_files
    return interesting_files

Una forma más de contribuir es hacer que el ciclo de comparación sea más inteligente y rápido. 

Descarga PhishingKitTracker aquí

Deja un comentario