Skip to content

downloadEDLs

downloadEDLs #1497

Workflow file for this run

# workflow de descarga de feeds
name: downloadEDLs
# defino el tigger del workflow. En este caso se ejecutaran unas tares
on:
# on demand ( manually)
workflow_dispatch:
# scheduled cada 13 horas y 3 minutos, conviene que no sea primo.
schedule:
# every 12:30
- cron: '30 12 * * *'
jobs:
feeds:
# Descarga automatica de feeds. Hasta ahora de:
# - Abuse.ch las recomendadas. IPs.
# - CERT-PA. URLs.
# - Phishunt.io: URLs.
# - URLhaus: Proyecto de abuse.ch. URL maliciosas.
# - http://www.botvrij.eu
# - Download feeds https://feodotracker.abuse.ch/downloads/ipblocklist_recommended.txt
# - 28-08-22 borrado => https://infosec.cert-pa.it/analyze/listurls.txt eliminada por problemas de conexion
# - 28-08-22 borrado => https://www.binarydefense.com/banlist.txt -O feeds/download/binarydefense-ips.txt problemas conexion
# - 28-08-22 añadido => Nodos de salida de TOR
# - 28-08-22 añadido => lista negra de certificados, SSLBL SSL Certificate Blacklist (SHA1 Fingerprints)
# CSV: Listing date (UTC),SHA1 Fingerprint of the blacklisted SSL certificate,Listing reason
# - 28-08-22 añadido Suricata IDS SSL Certificate Ruleset
# - 28-08-22 añadido "https://sslbl.abuse.ch/blacklist/sslipblacklist.csv" fichero de ips cuyo certificado esta incluido en la lista anterior
# El formato del CSV Firstseen,DstIP,DstPort
# - 28-08-22 añadido SSLBL RPZ (DNS Reponse Policy Zone (RPZ or DNS Firewall)), para bloquear la resolución de
# ciertos dominios dns. Contiene la IP que se ejecutan con un certificado bloqueado en SSLBL. Se bloqueará cualquier dominio que
# resuelva en esas direcciones.
name: Feeds
runs-on: ubuntu-latest
steps:
- name: IOCs
uses: actions/checkout@v3
- name: Run a wget
env:
API: ${{ secrets.MALSHARE_API }}
API_B: ${{ secrets.BITCOINT_API }}
run: |-
wget "https://feodotracker.abuse.ch/downloads/ipblocklist_recommended.txt" -O feeds/download/ipblocklist_recommended-ips.txt
wget "https://phishunt.io/feed.txt" -O feeds/download/feed-phishunt-url.txt
wget "https://urlhaus.abuse.ch/downloads/text/" -O feeds/download/urlhaus-abuse-sh-url.txt
wget "https://malshare.com/api.php?api_key=$API&action=getlistraw" -O feeds/download/malshare-hash.txt
wget "https://www.botvrij.eu/data/ioclist.ip-dst.raw" -O feeds/download/botvrij-ioc-ips.txt
wget "https://www.botvrij.eu/data/ioclist.url.raw" -O feeds/download/botvrij-ioc-url.txt
wget "https://www.botvrij.eu/data/ioclist.domain.raw" -O feeds/download/botvrij-ioc-domain.txt
wget "https://www.botvrij.eu/data/ioclist.filename" -O feeds/download/botvrij-ioc-filename.txt
wget "https://www.botvrij.eu/data/ioclist.hostname.raw" -O feeds/download/botvrij-ioc-hostname.txt
wget "https://www.botvrij.eu/data/ioclist.md5.raw" -O feeds/download/botvrij-ioc-md5-txt
wget "https://www.botvrij.eu/data/ioclist.sha256.raw" -O feeds/download/botvrij-ioc-sha256.txt
curl "http://reputation.alienvault.com/reputation.data" | cut -d"#" -f1 > feeds/download/alienvault.reputation-ips.txt
wget "https://lists.blocklist.de/lists/all.txt" -O feeds/download/blocklist-de-ips.txt
curl https://www.bitcoinabuse.com/api/download/1d?api_token={$API_B}|cut -d, -f2 | egrep "[^13][a-km-zA-HJ-NP-Z1-9]{25,34}$"|sort|uniq > feeds/download/BTCabuse-hash.txt
wget "https://www.dan.me.uk/torlist/?exit" -O feeds/download/TOR-exit.txt
curl "https://sslbl.abuse.ch/blacklist/sslblacklist.csv" | grep -v "#" > feeds/download/sslblacklist.csv
curl "https://sslbl.abuse.ch/blacklist/sslipblacklist.csv" | grep -v "#" > feeds/download/sslipblacklist.csv
curl "https://sslbl.abuse.ch/blacklist/sslblacklist_tls_cert.rules" | grep -v "#" > feeds/download/sslblacklist_tls_cert.rules
curl "https://sslbl.abuse.ch/blacklist/sslipblacklist.csv" | grep -v "#" > feeds/download/sslipblacklist.csv
curl "https://sslbl.abuse.ch/blacklist/sslbl.rpz" > feeds/download/sslbl.rpz
curl "https://openphish.com/feed.txt" > feeds/download/openphish_feed.txt
curl "https://threatview.io/Downloads/DOMAIN-High-Confidence-Feed.txt" > feeds/download/threatview_domain_High_Confidence.txt
- name: Commit
run: |-
git config user.name "Automated"
git config user.email "actions@users.noreply.github.com"
git add -A
timestamp=$(date -u)
git commit -m "Latest data: ${timestamp}" || exit 0
- name: Push
if: steps.check_changes.outputs.bigChange != 'true'
run: |-
git push
# tareas. Se debe desplegar un entorno virtual de ubuntu para que se ejecute esta accion. Como maquina virtual.
# accion que se conectará a una API externa y en base a lo que diga el fichero de configuración cloud-servicecs-mining-config.yml
# aplicará un filtrado y la salida se almacenará en el repositorio de la maquina ubuntu. Luego haremos un push para colocarla.
#edlaction:
edl:
runs-on: ubuntu-latest
steps:
# checkout
- name: Check out this repo
uses: actions/checkout@v3
# Fetch Accion de Luigi Mori ( PaloAlto - Minemeld )
- name: Fetch the endpoint lists
uses: jtschichold/mm-cloud-services-miners@v0
with:
config: feeds/cloud-services-mining-config.yml
configSection: azure
#- name: Fetch 0365
#uses: jtschichold/mm-cloud-services-miners@v0
#with:
#config: feeds/cloud-services-mining-config.yml
#configSection: o365
# para bajarse las listas de officee365 la API requiere un GUID a.k.a UUID (Globally Unique IDentifier or Universally Unique Identifier)
# eso es así pq Microsoft de tracking
#env:
#0365MINER_CLIENT_GUID: ${{ secrets.GUID }}
# Filter & Transform
- name: Process IP lists
# we pin a specific commit, for increased security
uses: jtschichold/mm-process-ip-list@v0
with:
# process al the lists matching the glob
list: feeds/download/**/*ips.txt
# do not aggregate, just filter lists in place
filterInPlace: true
# remove overlaps with reserved IP addresses
filterReservedIPs: true
# filter IPv4 CIDRs where the subnet mask is smaller than 8
minIPv4Mask: 8
# filter IPv6 CIDRs where the subnet mask is smaller than 8
minIPv6Mask: 8
# remove overlaps with CIDRs contained in the
# file ip-exclusion-list in the repo
filter: feeds/download/ip-exclusion-list
# Check & Update
# check before commit
- name: Check changes
id: check_changes
uses: jtschichold/mm-check-changes@v0
with:
includeGlob: '**/*.txt'
# commit
- name: Commit
run: |-
git config user.name "Automated"
git config user.email "actions@users.noreply.github.com"
git status
git add -A
git status
timestamp=$(date -u)
git commit -m "Latest data: ${timestamp}" || exit 0
# not a big change, let's push automatically
- name: Push
# this is the important part!
# this step happens if this condition is verified
# in this case if the check_changes step has *not* set bigChange to 'true'
if: steps.check_changes.outputs.bigChange != 'true'
run: |-
git push
# big change detected, open a PR
- name: Create PR
# same as above, but reversed logci
# we want this step to be executed only if bigChange is 'true'
if: steps.check_changes.outputs.bigChange == 'true'
uses: peter-evans/create-pull-request@v3.6.0
with:
branch: please-check-changes