Science Score: 75.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
✓Institutional organization owner
Organization tumi8 has institutional domain (www.net.in.tum.de) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.1%) to scientific vocabulary
Repository
goscanner is a tool for large-scale TLS and SSH scans
Basic Info
- Host: GitHub
- Owner: tumi8
- License: gpl-3.0
- Language: Go
- Default Branch: master
- Size: 670 KB
Statistics
- Stars: 31
- Watchers: 10
- Forks: 12
- Open Issues: 1
- Releases: 3
Metadata Files
README.md
TUM goscanner
goscanner is a tool for large-scale TLS, x509 Certificate, HTTP header, and SSH scans developed at the TUM Chair of Network Architectures and Services (see Authors).
| Update| | |---|---| | 2023-01-19 | goscanner can now reconstruct the TLS configuration on a server with DissecTLS and collect JARM fingerprints | | 2022-05-24 | goscanner is now able to actively fingerprint TLS servers|
Building
Steps for building goscanner:
- Set up your go environment
- Run
make
Configuring Scans
goscanner supports multipe types of scans. Among them are [ tls, http, ssh, scvs, dissectls, jarm].
Some scans can be chained (e.g., tls and http to scan https).
In these cases they will reuse the same TCP connection.
See example.conf how to configure the default https scan.
Input
goscanner needs a list of resolved IPv4 or Ipv6 address [:Port] [,domain name [,client hello]] tuples as input. The domain and client hello is optional. If a domain is present, it will be used as SNI. If present, the TLS scan will use the provided client hello for scanning.
Example input.csv:
172.217.22.78,google.com,client_hello_1
172.217.22.78,google.com,client_hello_2
172.217.22.78,,client_hello_2
140.82.121.4,github.com
[::1]:8443
::1
The IP, domain tuples can be generated, for example, with massdns
bin/massdns -r local_resolvers.txt input_domains.txt -q -o J \
| jq '[.name,.data.answers[-1].data] | @csv' -r \
| csvtool col 1,2 - | awk -F, '$2!=""' > input.csv
goscanner provides a utility function to enhance the input with the client hellos
(we recommend randomizing the input to reduce bursts on target servers).
The new input files will contain the cross product between the set of client hellos and the original input set of targets.
The names of the client hellos are the names of all json files in the --ch-dir (e.g., client_hello_1.json).
./goscanner create-ch-input --ch-dir ./client-hellos --input input.csv | shuf > input-chs.csv
For scanning, the client hellos can be loaded from a directory with the config option
client-hello-dir = ./client-hellos
Generating CHs
The Client Hellos (CHs) used for the TLS scan can be configured.
They are loaded from .json files and several CHs are already built in the scanner (including CHs built after JARM).
They can be generated with
./goscanner create-ch --out client-hellos -c custom
./goscanner create-ch --out client-hellos -c jarm
goscanner is also able to generate random CHs. However, there is no guarantee these are functional CHs.
goscanner will download possible parameters for the CHs from IANA into the tmp directory.
./goscanner create-ch --out ./client-hellos -c random --num-random 1000 --tmp ./tmp
Active TLS Stack Fingerprinting
goscanner is able to fingerprint TLS servers as described by active-tls-fingerprinting.github.io. Additionally, this site provides optimized client hellos for fingerprinting. If you use the goscanner for fingerprinting, please cite our paper.
The goscanner is able to post-process a scan with multiple CHs per target to generate the fingerprints.
./goscanner generate-fingerprints --scanner-dir ./tls-scanner-output [-ch-dir ./client-hellos]
DissecTLS
goscanner is able to reconstruct the TLS configuration from servers as described by dissectls.github.io. If you use the DissecTLS functionality, please cite our paper. Information the goscanner can collect:
- The supported TLS version (only 1.0, 1.1, 1.2, and 1.3)
- The order of all supported ciphers, supported groups, and ALPNs
- the ALPN, supported groups, supported groups with key share, and cipher preference: client or server
- The order of the TLS extensions
- Whether a server reacts to missing ciphers, supported group, and ALPNs with TLS Alerts, TCP Errors, or just ignores the values we send
Reading logs
To get better human-readable logs from the json output you can use
go get -u github.com/mightyguava/jl/cmd/jl
Just pipe your logs to jl --format logfmt. e.g.
tail scanner.log | jl --format logfmt
Owner
- Name: Chair of Network Architectures and Services
- Login: tumi8
- Kind: organization
- Location: Munich
- Website: https://www.net.in.tum.de/
- Repositories: 48
- Profile: https://github.com/tumi8
Citation (CITATION.cff)
cff-version: 1.2.0
title: TUM goscanner
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Oliver
email: gasser@net.in.tum.de
family-names: Gasser
affiliation: Technical University of Munich
- given-names: Markus
email: sosnowski@net.in.tum.de
family-names: Sosnowski
orcid: 'https://orcid.org/0000-0002-7322-5804'
affiliation: Technical University of Munich
- given-names: Patrick
family-names: Sattler
orcid: 'https://orcid.org/0000-0001-9375-3113'
affiliation: Technical University of Munich
- given-names: Johannes
family-names: Zirngibl
affiliation: Technical University of Munich
orcid: 'https://orcid.org/0000-0002-2918-016X'
identifiers:
- type: doi
value: 10.5281/zenodo.11243061
repository-code: 'https://github.com/tumi8/goscanner'
abstract: >-
The TUM goscanner is a tool for large-scale TLS, x509
Certificate, HTTP header, and SSH scans developed at the
TUM Chair of Network Architectures and Services.
license: GPL-3.0
GitHub Events
Total
- Watch event: 4
Last Year
- Watch event: 4
Issues and Pull Requests
Last synced: almost 3 years ago
All Time
- Total issues: 1
- Total pull requests: 9
- Average time to close issues: 2 days
- Average time to close pull requests: 2 days
- Total issue authors: 1
- Total pull request authors: 5
- Average comments per issue: 0.0
- Average comments per pull request: 0.11
- Merged pull requests: 8
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 1
- Average time to close issues: N/A
- Average time to close pull requests: 4 minutes
- Issue authors: 0
- Pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- ralphholz (1)
Pull Request Authors
- ogasser (4)
- sattler (2)
- Eichner (1)
- gustavoluvizotto (1)
- syncall (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 3
proxy.golang.org: github.com/tumi8/goscanner
- Homepage: https://github.com/tumi8/goscanner
- Documentation: https://pkg.go.dev/github.com/tumi8/goscanner#section-documentation
- License: GPL-3.0
-
Latest release: v1.0.0
published about 2 years ago
Rankings
Dependencies
- github.com/DataDog/zstd v1.4.5
- github.com/bt51/ntpclient v0.0.0-20140310165113-3045f71e2530
- github.com/golang/protobuf v1.3.1
- github.com/jessevdk/go-flags v1.4.0
- github.com/kr/pretty v0.2.0
- github.com/onsi/ginkgo v1.12.0
- github.com/onsi/gomega v1.9.0
- github.com/pkg/errors v0.8.1
- github.com/rs/zerolog v1.19.0
- github.com/tumi8/ssh v0.0.0-20170913080928-6e772825dc10
- golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
- golang.org/x/net v0.0.0-20200625001655-4c5254603344
- golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980
- golang.org/x/text v0.3.2
- golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1
- golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
- gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15
- github.com/DataDog/zstd v1.4.5
- github.com/bt51/ntpclient v0.0.0-20140310165113-3045f71e2530
- github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e
- github.com/fsnotify/fsnotify v1.4.7
- github.com/golang/protobuf v1.2.0
- github.com/golang/protobuf v1.3.1
- github.com/hpcloud/tail v1.0.0
- github.com/jessevdk/go-flags v1.4.0
- github.com/kr/pretty v0.2.0
- github.com/kr/pty v1.1.1
- github.com/kr/text v0.1.0
- github.com/onsi/ginkgo v1.6.0
- github.com/onsi/ginkgo v1.12.0
- github.com/onsi/gomega v1.7.1
- github.com/onsi/gomega v1.9.0
- github.com/pkg/errors v0.8.1
- github.com/rs/xid v1.2.1
- github.com/rs/zerolog v1.19.0
- github.com/tumi8/ssh v0.0.0-20170913080928-6e772825dc10
- golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
- golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
- golang.org/x/net v0.0.0-20180906233101-161cd47e91fd
- golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3
- golang.org/x/net v0.0.0-20190620200207-3b0461eec859
- golang.org/x/net v0.0.0-20200625001655-4c5254603344
- golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f
- golang.org/x/sync v0.0.0-20190423024810-112230192c58
- golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e
- golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a
- golang.org/x/sys v0.0.0-20190412213103-97732733099d
- golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e
- golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd
- golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980
- golang.org/x/text v0.3.0
- golang.org/x/text v0.3.2
- golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1
- golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e
- golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74
- golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7
- golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
- gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
- gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15
- gopkg.in/fsnotify.v1 v1.4.7
- gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7
- gopkg.in/yaml.v2 v2.2.4