Skip to content

Ibonok/elastic_scan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

elastic_scan

Dump Elasticsearch Instances

The code is very dirty but works so far :-)
Define an elasticsearch host and list all indexes and dump them to a file.
You can write some yara rules to search intressting entries.

Installation

git clone https://github.com/Ibonok/elastic_scan.git cd elastic_scan pip3 install -r requirements.txt 

Donate: (ETH) 0x489B56bA505F88a054893d5BdE2c8b35f4A33FAb

Usage

python elastic_scan.py --help usage: elastic_scan.py [-h] [-t [TIMEOUT]] [-r [RETRIES]] [-s [SIZE]] [-v [VERBOSE]] [-i [INDEXES [INDEXES ...]]] [-d [DUMP]] [-o {csv,json}] [-std [STDOUT]] [-y [YARA]] [--ip [IP]] [-f [FILENAME]] Search for elasticsearch on the Internet. Display all Indexes and dump the Indexes. optional arguments: -h, --help show this help message and exit -t [TIMEOUT], --timeout [TIMEOUT] Connection Timeout, Default = 30s -r [RETRIES], --retries [RETRIES] Connection Retries, Default = 0 -s [SIZE], --size [SIZE] Define Scroll Size, Default = 1 -v [VERBOSE], --verbose [VERBOSE] Increase verbosity level 0:INFO, 1:DEBUG, 2:WARNING, 3:ERROR, 4:CRITICAL -i [INDEXES [INDEXES ...]], --indexes [INDEXES [INDEXES ...]] Give known indexes : index1 index2 indexn, Default = * -d [DUMP], --dump [DUMP] Dump indexes of target. Default = False -o {csv,json}, --output {csv,json} Output File: out/ip/indexname, csv=only _source, json=all -std [STDOUT], --stdout [STDOUT] Display DUMP to stdout, Default = False -y [YARA], --yara [YARA] Turn on yara rule search, Default = False --ip [IP] Target IP:PORT -f [FILENAME], --filename [FILENAME] File with IP:PORT 

Example

Get all indexes

➜ ~ python3 elastic_scan.py --ip 127.0.0.1:9200 ##################################################	Connection Timeout: 30	Connection Retries: False	Scroll Size: 1	Indexes: *	Dump Elasticsearch Host: False	Output Format: None ################################################## Connect to 127.0.0.1:9200 Name: AOw7Lql Clustername: elasticsearch Lucene Version: 7.2.1 Try to get INDEXES Index: pastehunter-2018-26 Index: pastehunter-2018-24 Index: .triggered_watches Index: .watches Index: .kibana Index: pastehunter-2018-25 Index: pastehunter-2018-27 Index: .monitoring-es-6-2018.06.14 Index: .monitoring-alerts-6 

Dump the last 3 entries of all Indexes

python3 elastic_scan.py --ip 127.0.0.1:9200 -d -s 3 --out csv ##################################################	Connection Timeout: 30	Connection Retries: False	Scroll Size: 3	Indexes: *	Dump Elasticsearch Host: True	Output Format: csv ################################################## Connect to 127.0.0.1:9200 Name: AOw7Lql Clustername: elasticsearch Lucene Version: 7.2.1 Try to get INDEXES Index: .monitoring-es-6-2018.06.14 Output to CSV IP/filename: 127.0.0.1:9200/.monitoring-es-6-2018.06.14.csv Index: pastehunter-2018-25 Output to CSV IP/filename: 127.0.0.1:9200/pastehunter-2018-25.csv Index: pastehunter-2018-27 Output to CSV IP/filename: 127.0.0.1:9200/pastehunter-2018-27.csv Index: pastehunter-2018-26 Output to CSV IP/filename: 127.0.0.1:9200/pastehunter-2018-26.csv Index: .watches Output to CSV IP/filename: 127.0.0.1:9200/.watches.csv Index: .kibana Output to CSV IP/filename: 127.0.0.1:9200/.kibana.csv Index: pastehunter-2018-24 Output to CSV IP/filename: 127.0.0.1:9200/pastehunter-2018-24.csv Index: .triggered_watches Output to CSV IP/filename: 127.0.0.1:9200/.triggered_watches.csv Index: .monitoring-alerts-6 Output to CSV IP/filename: 127.0.0.1:9200/.monitoring-alerts-6.csv ➜ ~ ls 127.0.0.1:9200 elastic_scan.py 

Get some Elasticsearch Hosts from shodan

shodan download elasticsearch product:"Elastic" --limit 2 Search query:	product:Elastic Total number of results:	42079 Query credits left:	95 Output file:	elasticsearch.json.gz [####################################] 100% Saved 1000 results into file elasticsearch.json.gz shodan parse --fields ip_str,port --separator : elasticsearch.json.gz | sed s'/.$//' > el_ip cat el_ip file: el_ip xxx.xxx.xxx.xxx:80 xxx.xxx.xxx.xxx:80 xxx.xxx.xxx.xxx:80 xxx.xxx.xxx.xxx:80 python3 elastic_scan.py -f el_ip -d -o json -s 10 

Write your yara Rules

ls Rules/ index.yar somestring.yar 

If you create your own rule file you need to at in index.yar

Roadmap

◻️ Clean code
🔳 Searching Dump Results with Yara Rules
◻️ etc.

Packages

No packages published

Contributors 3

  •  
  •  
  •