• Stars
    star
    2,178
  • Rank 20,317 (Top 0.5 %)
  • Language
    Go
  • License
    ISC License
  • Created over 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A ssh server that knows who you are. $ ssh whoami.filippo.io

whoami.filippo.io

An ssh server that knows who you are.

Try it (it's harmless)

ssh whoami.filippo.io

ED25519 key fingerprint is SHA256:qGAqPqtlvFBCt4LfMME3IgJqZWlcrlBMxNmGjhLVYzY.
RSA key fingerprint is SHA256:O6zDQjQws92wQSA41wXusKquKMuugPVM/oBZXNmfyvI.

How it works

When ssh tries to authenticate via public key, it sends the server all your public keys, one by one, until the server accepts one. One can take advantage of this to enumerate all the client's installed public keys.

On the other hand, GitHub allows everyone to download users' public keys (which is very handy at times). Ben Cox took advantage of that and built a dataset of all GitHub public keys.

This is a pretty vanilla golang.org/x/crypto/ssh Go server that will advertise (publickey,keyboard-interactive) authentication. It won't accept any public key, but it will take a note of them. Once the client is done with public keys, it will try keyboard-interactive, which the server will accept without sending any challenge, so that no user interaction is required.

Then it just lets you open a shell+PTY, uses the public keys and Ben's database to find your username, asks the GitHub API your real name, prints all that and closes the terminal.

All the interesting bits are in server.go.

How do I stop it?

If this behavior is problematic for you, you can tell ssh not to present your public keys to the server by default.

Add these lines at the end of your ~/.ssh/config (after other "Host" directives)

Host *
    PubkeyAuthentication no
    IdentitiesOnly yes

And then specify what keys should be used for each host

Host example.com
    PubkeyAuthentication yes
    IdentityFile ~/.ssh/id_rsa
    # IdentitiesOnly yes # Enable ssh-agent (PKCS11 etc.) keys

If you want you can use different keys so that they can't be linked together

Host github.com
    PubkeyAuthentication yes
    IdentityFile ~/.ssh/github_id_rsa

More Repositories

1

mkcert

A simple zero-config tool to make locally trusted development certificates with any names you'd like.
Go
45,478
star
2

age

A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.
Go
15,204
star
3

yubikey-agent

yubikey-agent is a seamless ssh-agent for YubiKeys.
Go
2,561
star
4

Heartbleed

A checker (site and tool) for CVE-2014-0160
Go
2,303
star
5

gvt

gvt was a minimal go vendoring tool, based on gb-vendor. Today, you want to use modules instead.
Go
731
star
6

passage

A fork of password-store (https://www.passwordstore.org) that uses age (https://age-encryption.org) as backend.
Shell
717
star
7

homebrew-musl-cross

Homebrew Formula for static-friendly musl-based GCC macOS-to-Linux cross-compilers
Ruby
511
star
8

captive-browser

A dedicated Chrome instance to log into captive portals without messing with DNS settings.
Go
420
star
9

mostly-harmless

A bag of various unrelated projects with varying levels of serviceability and destructiveness.
JavaScript
208
star
10

awesome-age

A collection of projects and resources in the age file encryption ecosystem.
192
star
11

CVE-2016-2107

Simple test for the May 2016 OpenSSL padding oracle (CVE-2016-2107)
Go
185
star
12

vendorcheck

Check that all your Go dependencies are properly vendored
Go
178
star
13

edwards25519

filippo.io/edwards25519 β€” A safer, faster, and more powerful low-level edwards25519 Go implementation.
Go
124
star
14

ed25519-dalek-rustgo

Wrapper for curve25519-dalek using rustgo, a technique to directly call Rust code from Go programs with near-zero overhead, meant to replace manually written assembly.
Go
114
star
15

mlkem768

A Go implementation of the quantum-resistant key encapsulation method ML-KEM (formerly known as Kyber).
Go
112
star
16

tracetools

Tools to process Go trace logs into various profiles. Complement for "go tool trace".
Go
109
star
17

sunlight

A Certificate Transparency log implementation and monitoring API designed for scalability, ease of operation, and reduced cost.
Go
107
star
18

zcash-mini

A minimal portable Zcash z-address generator for offline / paper wallets
Go
96
star
19

BERserk

A Go implementation of the BERserk attack against Mozilla NSS ASN.1 parsing of PKCS#1 RSA signatures with e = 3. Complete of a certificate generation tool, works with CAs in the trust store.
Go
93
star
20

hstools

Library and tools to interact with and analyze Tor HSDirs.
Go
72
star
21

homebrew-gomod

A brew command to cleanly install binaries from Go modules.
Shell
68
star
22

blockchainr

Exploiting ECDSA Failures in the Bitcoin Blockchain
Go
61
star
23

typage

A TypeScript implementation of the age file encryption format, based on libsodium.
TypeScript
59
star
24

openbsd-fde-crack

Some code to bruteforce OpenBSD softraid encrypted drives - NOT A READY-TO-USE TOOL
Go
57
star
25

travis-cron

This web app allows you to trigger Travis CI builds periodically
Python
56
star
26

intermediates

Package filippo.io/intermediates embeds a bundle of known unexpired, unrevoked intermediate certificates chaining to roots in the Mozilla Root Program
Go
54
star
27

gorebuild

Extract the import path of Go binaries and rebuild them. No more stale GOROOT.
Go
54
star
28

nistec

NIST P elliptic curves (re-exported from crypto/internal/nistec)
Assembly
46
star
29

otherport

LD_PRELOAD hack to redirect connections to other ports
C
42
star
30

powersoftau

An independent implementation of the Powers of Tau MPC ceremony.
Go
34
star
31

HNTitles

Tweet probabilistically generated HN post titles.
Python
29
star
32

go-cpace-ristretto255

An EXPERIMENTAL Go implementation of the CPace PAKE, instantiated with the ristretto255 group.
Go
28
star
33

alum

A forwarding mail server inspired by @alum.mit.edu
Go
17
star
34

keygen

Deterministic key generation for Go.
Go
16
star
35

FiloSottile

15
star
36

axel

Axel Download Accelerator [git mirror]
C
15
star
37

b2

Efficient, idiomatic Go library for Backblaze B2 Cloud Storage.
Go
12
star
38

bigmod

A constant-time library for big integers modulo a prime, usable for cryptographic applications. Exported from crypto/internal/bigmod, the backend of crypto/rsa and crypto/ecdsa.
Go
12
star
39

crypto.py

A collection of pure Python crypto implementations. All modules are standalone. Available in Python 2 and Python 3 flavors!
Python
10
star
40

litetlog

A collection of liteweight transparency logging tools, compatible with the Sigsum and Omniwitness ecosystems.
Go
8
star
41

Pendolo-OpenCV

C++
6
star
42

Griffith

Media collection manager [MIRROR]
Python
5
star
43

blog.filippo.io

blog.filippo.io theme. Slightly tweaked 0.9.4 Casper. Pretty please, don't just clone it <3
CSS
4
star
44

homebrew-lite

Modified homebrew-core formula with fewer dependencies.
Ruby
3
star
45

codesearchguide.org

Everything you ever wanted to know about code search. (WIP, will be online soon!)
CSS
2
star
46

torspec

Forked from git.torproject.org/torspec.git
Python
2
star
47

.github

2
star
48

hs-api-playground

Playground for the Hacker School API
Python
1
star
49

WPA-hazard

Deep into the default WPA generation algorithms
C
1
star
50

homebrew-age

1
star
51

crypto-tls-bogo-shim

A shim to test Go crypto/tls with the BoringSSL test suite. Which is based on crypto/tls. So meta.
Go
1
star
52

filosottile.github.io

An empty repository for redirecting filosottile.github.io to filippo.io (https://github.com/FiloSottile/filippo.io).
1
star