Merge pull request #4 from austin-taylor/master

Fork Sync
This commit is contained in:
Austin Taylor
2018-01-04 16:44:30 -05:00
committed by GitHub
2 changed files with 50 additions and 36 deletions

View File

@ -12,20 +12,12 @@ VulnWhisperer is a vulnerability data and report aggregator. VulnWhisperer will
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](http://choosealicense.com/licenses/mit/)
Requirements
-------------
####
* ElasticStack 5.x
* Python 2.7
* Vulnerability Scanner
* Optional: Message broker such as Kafka or RabbitMQ
Currently Supports
-----------------
### Vulnerability Frameworks
- [X] Nessus V6
- [X] Nessus (v6 & **v7**)
- [X] Qualys Web Applications
- [ ] Qualys Vulnerability Management (_in progress_)
- [ ] OpenVAS
@ -34,18 +26,32 @@ Currently Supports
- [ ] NMAP
- [ ] More to come
Setup
Getting Started
===============
```python
Install pip:
sudo <pkg-manager> install python-pip
sudo pip install --upgrade pip
1) Follow the [install requirements](#installreq)
2) Fill out the section you want to process in <a href="https://github.com/austin-taylor/VulnWhisperer/blob/master/configs/frameworks_example.ini">example.ini file</a>
3) Modify the IP settings in the <a href="https://github.com/austin-taylor/VulnWhisperer/tree/master/logstash">logstash files to accomodate your environment</a> and import them to your logstash conf directory (default is /etc/logstash/conf.d/)
4) Import the <a href="https://github.com/austin-taylor/VulnWhisperer/tree/master/kibana/vuln_whisp_kibana">kibana visualizations</a>
5) [Run Vulnwhisperer](#run)
Manually install requirements:
sudo pip install pytz
sudo pip install pandas
Requirements
-------------
####
* ElasticStack 5.x
* Python 2.7
* Vulnerability Scanner
* Optional: Message broker such as Kafka or RabbitMQ
<a id="installreq">Install Requirements</a>
--------------------
```python
Install dependant modules
cd deps/qualysapi
python setup.py install
Using requirements file:
sudo pip install -r /path/to/VulnWhisperer/requirements.txt
@ -68,7 +74,7 @@ There are a few configuration steps to setting up VulnWhisperer:
<p align="left" style="width:200px"><img src="https://github.com/austin-taylor/vulnwhisperer/blob/master/docs/source/config_example.png" style="width:200px"></p>
Run
<a id="run">Run</a>
-----
To run, fill out the configuration file with your vulnerability scanner settings. Then you can execute from the command line.
```python
@ -81,6 +87,17 @@ vuln_whisperer -c configs/example.ini -s qualys
<p align="center" style="width:300px"><img src="https://github.com/austin-taylor/vulnwhisperer/blob/master/docs/source/running_vuln_whisperer.png" style="width:400px"></p>
Next you'll need to import the visualizations into Kibana and setup your logstash config. A more thorough README is underway with setup instructions.
Running Nightly
---------------
If you're running linux, be sure to setup a cronjob to remove old files that get stored in the database. Be sure to change .csv if you're using json.
Setup crontab -e with the following config (modify to your environment) - this will run vulnwhisperer each night at 0130:
`00 1 * * * /usr/bin/find /opt/vulnwhisp/ -type f -name '*.csv' -ctime +3 -exec rm {} \;`
`30 1 * * * /usr/local/bin/vuln_whisperer -c /opt/vulnwhisp/configs/example.ini`
_For windows, you may need to type the full path of the binary in vulnWhisperer located in the bin directory._
Credit

View File

@ -29,16 +29,13 @@ def main():
parser.add_argument('-p', '--password', dest='password', required=False, default=None, type=lambda x: x.strip(), help='The NESSUS password')
args = parser.parse_args()
vw = vulnWhisperer(config=args.config,
profile=args.section,
verbose=args.verbose,
username=args.username,
password=args.password)
vw.whisper_vulnerabilities()
'''
try:
if args.config and not args.section:
print('{red} ERROR: {error}{endc}'.format(red=bcolors.FAIL,
error='Please specify a section using -s. \
\nExample vuln_whisperer -c config.ini -s nessus',
endc=bcolors.ENDC))
else:
vw = vulnWhisperer(config=args.config,
profile=args.section,
verbose=args.verbose,
@ -52,7 +49,7 @@ def main():
if args.verbose:
print('{red} ERROR: {error}{endc}'.format(red=bcolors.FAIL, error=e, endc=bcolors.ENDC))
sys.exit(2)
'''
if __name__ == '__main__':
main()