Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Documentation - UPDATE #4

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 59 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,63 @@

## Goals

This script is for fingerprinting servers to determine what vunerabilities should lead to responsible disclosure.


## TO DO
0. security.txt = done (shodan)
1. Find a domain
- ssl subject or issuer domain (exclude common CAs)
- check other ports on same IP (shodan)
- EHLO banner
- web content
- ssh banner
- SNMP
- passive dns domain (dumpsterDNS, circl.lu etc)
- reverse dns domain (exclude answers that contain the ip address in reverse as prob just the ISP?)
- check BGP and repeat for other IPs in the subnet, find a pattern?
This script is for fingerprinting servers to find potential vunerabilities for responsible disclosure.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, this is not to find vulns. This script is just meant to find the owners of vulnerable systems in bulk so we can contact them.


## Requirements

Requirements are in the requirements.txt

```python
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so why duplicate them here? This will just get out of sync with the ground truth.


requests>2
pypdns>2
pypssl>2

```

## Quick Start

ADD HOW TO USE HERE

## Feature list

[x] security.txt (shodan)
[ ] Find a domain
[ ] ssl subject or issuer domain (exclude common CAs)
[ ] check other ports on same IP (shodan)
- [ ] EHLO banner
- [ ] web content
- [ ] ssh banner
- [ ] SNMP
[ ] Passive dns domain (dumpsterDNS, circl.lu etc)
[ ] Reverse dns domain (exclude answers that contain the ip address in reverse as prob just the ISP?)
[ ] Check BGP and repeat for other IPs in the subnet, find a pattern?

2. Look for security contact on the domain (or IP if 1 unsuccessful)
- security.txt
- scrape 80/443 links for security
- scrape for contact
- whois
- geoIP and pass to relevant CSIRT.Global chapter
- pass to local NCSC
[ ] security.txt
[ ] scrape 80/443 links for security
[ ] scrape for contact
[ ] whois
[ ] geoIP and pass to relevant CSIRT.Global chapter
[ ] pass to local NCSC

3. Add setting.py
3. Add setting.py
The goal here would be to decouple variables from the code logic as much as possible and improve configuration flexibility.
It would be the one place to store all project relevant variables

## Shodan Input

### Shodan - Set up and configuration.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mhm, not sure it's our responsibility to tell people how to use Shodan. There is a shodan import for convenience as we can often use shodan to find the vulnerable IPs and the export contains other useful clues we can use to find a contact.

You need credentials, information here: https://account.shodan.io/billing

username: the email

When you query shodan.io, it returns a banner.
The minimum parameters you can find it seems based on their documentation should always be something like this:
See here about banners : https://help.shodan.io/the-basics/what-is-shodan

Banners vary greatly depending on the type of systems you are looking into.
The simplest banner you could get as a result would look like this

```json
{
Expand All @@ -47,4 +74,12 @@ The minimum parameters you can find it seems based on their documentation should
}
}
```
See link to documentation here: https://help.shodan.io/the-basics/search-query-fundamentals
See link to documentation here: https://help.shodan.io/the-basics/search-query-fundamentals

## Expected Output

ADD EXPECTED OUTPUT HERE

## How to contribute

ADD HOW TO CONTRIBUTE HERE
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make a PR :)
We don't yet have a complicated process to get through.