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

Additional scripts from martin boller #1112

Merged
merged 7 commits into from
Jun 19, 2024
Merged
Show file tree
Hide file tree
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
343 changes: 341 additions & 2 deletions scripts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ This script pulls hostnames from a text file and creates a target for each.

### Arguments

* `<hostname>`: IP of the GVM host
* `<hostname>`: IP of the GVM host
* `<hosts_textfile>`: text file containing hostnames

### Example
Expand Down Expand Up @@ -257,7 +257,7 @@ This script starts a new scan on the given host.

---

## `send-delta-emails.gmp.py`
## `send-delta-emails.gmp.py`

This script, once started, will continuously send delta reports via email for selected tasks. The routine follows this procedure:

Expand Down Expand Up @@ -389,3 +389,342 @@ This script will update target hosts information for a desired task.
### Example

`$ gvm-script --gmp-username name --gmp-password pass ssh --hostname <gsm> scripts/update-task-target.gmp.py hosts_file.csv "303fa0a6-aa9b-43c4-bac0-66ae0b2d1698"`

## `create-alerts-from-csv.gmp.py`

Creates alerts as specified in a csv-file. See alerts.csv for file format/contents.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket create-alerts-from-csv.gmp.py alerts.csv `

- For SMB Alerts use something like %N_%CT%z in the naming of the report, as shown in the example alerts.csv
- %N is the name for the object or the associated task for reports, %C is the creation date in the format YYYYMMDD, and %c is the creation time in the format HHMMSS.
- The script only support EMAIL and SMB Alerts, please note that the fields are quite different between the two alert types, but refer to the sample alerts.csv
- The CSV must starts with name, type (EMAIL or SMB). The remaining fields then depend on the type chosen, specifically:
- EMAIL; *senders email*, *recipients email*, *mail subject*, *message body*, *notice type* (0=Report in message 1=Simple Notice or 2=Attach Report), *Report Type* (e.g. CSV Results), *Status* (Done, Requested)
- SMB; *SMB Credentials*,*SMB Share Path*,*Report Name*, *Report Folder* (if not stored in the root of the share), *Not used*, *Report Type* (e.g. CSV Results), *Status* (Done, Requested)
- A simple example below with 1 EMAIL alert and 1 SMB Alert.
Alert_EMAIL_Stop,EMAIL,"[email protected]","[email protected]","Message Subject","Message Body",1,"CSV Results","Stop Requested"
Alert_SMB_Done,SMB,"Cred_Storage_SMB","\\smbserver\share","%N_%CT%cZ","Reports",,"CSV Results","Done"

**Note**: This script relies on credentials as/if specified in alerts.csv as well as a working SMTP server on the Greenbone primary server. If you're using SMB add the required credentials first using [create-credentials-from-csv.gmp.py](#create-credentials-from-csvgmppy).

## `create-schedules-from-csv.gmp.py`

Creates schedules as specified in a csv-file. See schedules.csv for file format/contents.

### Example
`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket create-schedules-from-csv.gmp.py ./schedules.csv`

**Note**: create schedules, then credentials, then targets, then tasks and make sure to use the same names between the input csv-files.
The sample files should serve as examples, however a short explanation of a VCALENDAR stream exported from Greenbone below¹.

```
Example Key:Value pair | Comment
---|---
BEGIN:VCALENDAR | Begin VCalendar Entry
VERSION:2.0 | iCalendar Version number
PRODID:-//Greenbone.net//NONSGML Greenbone Security Manager 23.1.0//EN | As generated by Greenbone replace with something else if you want to
BEGIN:VEVENT | Start of Vevent
DTSTART:20231125T220000Z | Start date
DURATION:PT1H | Duration of scan. PT0S means "Entire Operation". S = seconds, M = minutes, H = hours
RRULE:FREQ=HOURLY;INTERVAL=4 | Frequency; Yearly, Monthly, Weekly, Hourly. Optionally Interval withs same unit
DTSTAMP:20231125T212042Z | Date stamp created
END:VEVENT | End Vevent
END:VCALENDAR | End VCalendar Entry
```

¹ See also https://www.rfc-editor.org/rfc/rfc5545.txt Internet Calendaring and Scheduling Core Object Specification (iCalendar)

## `create-credentials-from-csv.gmp.py`

Creates credentials as specified in a csv-file. See credentials.csv for file format/contents.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket create-credentials-from-csv.gmp.py ./credentials.csv`

**Note**: create schedules, then credentials, then targets, then tasks and make sure to use the same names between the input csv-files.
The sample files should serve as an example.

## `create-filters-from-csv.gmp.py`

Creates filters as specified in a csv-file. See filters.csv for file format/contents.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket create-filters-from-csv.gmp.py ./filters.csv`

- CSV-file; filterType, filterName, filterDescription, filterTerm, where
- filterType is one of Alert, Config (scan-config), Credential, Report, Scanner, Schedule, Target, or Task.
- filterName is the name of the filter.
- filterDescription is your description of the filter.
- FilterTerm is the actual term used to define the filter, such as \~Labnet.

## `create-tags-from-csv.gmp.py`

Creates tags as specified in a csv-file. See tags.csv for file format/contents.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket create-tags-from-csv.gmp.py ./tags.csv`

- May contain up to 10 resources to assign to tag. Currently only creates tags for Credential, Target, and Tasks
- Use tag:*searchforthis* as filter. Example: *tag:bsecure*
- Will add reports when I've figured out if tags are really dynamic and a filter will do it for new reports.

## `create-targets-from-csv.gmp.py`

Creates targets as specified in a csv-file. See targets.csv for file format/contents.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket create-targets-from-csv.gmp.py ./targets.csv`

- Alive test can be:

```
No | Alive Test | Notes
---|---|---
1 | Scan Config Default | ICMP Ping is used by default with the Built-in Scan Configurations
2 | ICMP Ping | ICMP echo request and echo reply messages
3 | TCP-ACK Service Ping | Sends TCP packets with only the ACK bit set. Target is required by [RFC 793](http://www.rfc-editor.org/rfc/rfc793.txt) to respond with a RST packet
4 | TCP-SYN Service Ping | SYN only scans (never sends an ACK even if target replies with SYN/ACK)
5 | ICMP & TCP-ACK Service Ping | ICMP & TCP-ACK tests combined
6 | ICMP & ARP Ping | ICMP Ping & sends a broadcast ARP request to solicit a reply from the host that uses the specified IP address
7 | TCP-ACK Service & ARP Ping | TCP-ACK and ARP Ping combined
8 | ICMP, TCP-ACK Service & ARP Ping | ICMP, TCP-ACK, and ARP Ping combined
9 | Consider Alive | Consider the target alive. This may take considerably longer to finish.
```

## `create-tasks-from-csv.gmp.py`

Creates tasks as specified in a csv-file. See tasks.csv for file format/contents

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket create-tasks-from-csv.gmp.py ./task.csv`

- Change Hosts Scan Ordering by changing #5 within CSV to Random, Sequential or Reverse in script.
- Specify up to 5 alerts in CSV, blanks will be discarded.

**Note**: Make sure that all other configurations that the tasks may rely on are already created, including alerts, schedules, credentials, and targets,
in other words if it is referenced in tasks.csv it must already exist.

## `empty-trash.gmp.py`

- Does what is says on the tin, empties the trashcan in Greenbone.
- Use it when you're testing like crazy and have a trashcan with ~ a gazillion objects
- You can also just use `gvm-cli --gmp-username *admin-user* --gmp-password *password* socket --pretty --xml "<empty_trashcan/>"`

## `export-csv-report.gmp.py`

Requests the report specified and exports it as a csv formatted report locally.

### Example
`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket export-csv-report.gmp.py *report_uuid* ./output.csv`

- Get the *report_uuid* with list-reports.gmp.py or find it in the UI. If the output is not specified it will be named *report_uuid.csv*
- Note the only changes to this script is an added ignore_pagination=True, details=True to get the full report.

## `export-pdf-report.gmp.py`

Requests the report specified and exports it as a pdf formatted report locally.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket export-pdf-report.gmp.py *report_uuid* ./output.pdf`

- Get the *report_uuid* with list-reports.gmp.py or find it in the UI. If the output is not specified it will be named *report_uuid.pdf*

**Note**: the only changes to this script is an added ignore_pagination=True, details=True to get the full report.

## `list-alerts.gmp.py`

Lists all alerts configured with name and uuid.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-alerts.gmp.py`

## `list-credentials.gmp.py`

Lists all credentials configured with name and uuid.

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-credentials.gmp.py`

Returns Credential uuid, Name, Type, & if insecure use is allowed

## `list-feeds.gmp.py`

Lists feeds and their status.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-feeds.gmp.py`

## `list-filters.gmp.py`

Lists filters.

### Example
`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-filters.gmp.py`

Returns Filter Name, uuid, type, and the term (filter)

## `list-groups.gmp.py`

Lists all groups

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-groups.gmp.py`

Returns Group Name, uuid, members

## `list-policies.gmp.py`

Lists compliance policies.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-policies.gmp.py`

## `list-portlists.gmp.py`

Lists port lists.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-portlists.gmp.py`

## `list-report-formats.gmp.py`

Lists all report formats with name and uuid.

### Example
`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-report-formats.gmp.py`

## `list-reports.gmp.py`

Lists all reports that have specified status

### Example
`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-reports.gmp.py *Status*`

where status is "All", "Requested", "Queued", "Interrupted", "Running", "Stop Requested", "Stopped", or "Done"

- Case matters, so "Done" or "Stopped" will work while "done" or "stopped" will not.
- Script now shows, in percentage, how far the scan/report is.
- There are no reports generated before at least one scan task has been started.

## `list-roles.gmp.py`

Lists all roles

### Example
`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-roles.gmp.py`

Returns Role Name, uuid, members

## `list-scan-configs.gmp.py`

Lists all scan configs.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-scan-configs.gmp.py`

## `list-scanners.gmp.py`

Lists all scanners currently configured.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-scanners.gmp.py`

Returns the scanners Name, uuid, & the host on which it resides (note CVE scanner does not return a host and sockets are local)

## `list-schedules.gmp.py`

Lists all schedules configured with name, uuid, timezone, and iCalendar information.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-schedules.gmp.py`

## `list-tags.gmp.py`

Lists all tags currently configured.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-tags.gmp.py`

Returns Tag name, uuid, Modified Date, Value, Type, and Count of ressources assigned to tag.

## `list-targets.gmp.py`

Lists all targets currently configured.

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-targets.gmp.py`

- No targets configured by default, however using the provided files in this repo, you should now have a few (5).
- Returns targets Name, uuid, number of Hosts, and credentials (SSH, SMB, ESXi, & SNMP Credentials)

## `list-tickets.gmp.py`

Lists all tickets created

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-tickets.gmp.py`

Returns the tickets name, Host, Associated Task, Status, and Note (depending on status either Open-, Fixed-, or Closed note).

## `list-users.gmp.py`

Lists all users

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket list-users.gmp.py`

Returns user Name, uuid, role, groups

¹ The default order is "None" which equals sequential, meaning that if this field is empty scanning will be sequential as it will be if specifically set to sequential. Possible results are None, Sequential, Reverse, or Random.

## `start-scans-from-csv.gmp.py`

Starts scans (tasks) specified in csv file

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket start-scans-from-csv.gmp.py *csv-file with task names*`

Returns the number of tasks started.

## `stop-all-scans.gmp.py`

Stops scans (tasks) that are in status running, queued, or requested

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket stop-all-scans.gmp.py`

- Stops all scans
- Returns the number of tasks stopped.

## `stop-scans-from-csv.gmp.py`

Stops scans (tasks) specified in csv file

### Example

`$ gvm-script --gmp-username *admin-user* --gmp-password *password* socket stop-scans-from-csv.gmp.py *csv-file with task names*`

- Stops the tasks specified in the file (example startscan.csv works for both scripts)
- Returns the number of tasks stopped.
16 changes: 1 addition & 15 deletions scripts/application-detection.gmp.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2017-2021 Greenbone AG
# SPDX-FileCopyrightText: 2017-2021 Greenbone AG
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

import sys
from argparse import Namespace
Expand Down
Loading
Loading