개요

  • TLSX 툴을 조사한다.
  • 이 툴은 IP주소를 지정해주면 해당 주소의 TLS증명서 정보를 추출해주는 툴인 것 같다.

깃허브 페이지에서는 다음과 같이 소개하고 있다.

TLSX is a tls data gathering and analysis toolkit.

설치

  • 설치에는 Go 1.21가 필요하다.
  • 시간이 좀 걸린다.
go install github.com/projectdiscovery/tlsx/cmd/tlsx@latest

설치시 에러

다음과 같은 에러가 발생했다. GO버전이 1.18.6으로, 툴에서 요구하는 버전보다 오래된 버전인 것이 원인이었다.

package crypto/ecdh is not in GOROOT (/usr/lib/golang/src/crypto/ecdh)

여기를 참고해서 GO를 재설치한다.

다음 커맨드를 사용하였다.

sudo su
cd
wget https://go.dev/dl/go1.21.6.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.21.6.linux-amd64.tar.gz

설치 후에는 GO경로를 등록한다.

.bash_profile에 go경로 등록

$PATH:/usr/local/go/bin:

Go 버전 확인

go version
go version go1.21.6 linux/amd64

재설치 및 PATH 등록

go install github.com/projectdiscovery/tlsx/cmd/tlsx@latest

tlsx 패키지는 go env GOPATH 값의 /bin 디렉토리에 설치된다. 이 경로도 PATH에 등록되어 있는지 확인한다. 등록되어 있지 않으면 추가한다.

사용법

tlsx -h

샘플: SAN/CN Probe

IP 대역을 주고 도메인을 뽑아내는 사용법이다.

echo 173.0.84.0/24 | tlsx -san -cn

샘플: 서브도메인 및 웹 서비스 호스트 찾기

  • dnsx와 결합하면 서브도메인까지 찾을 수 있다.
  • 그리고 그 결과를 httpx와 결합하면 실제로 동작중인 호스트를 찾을 수 있다.
echo 173.0.84.0/24 | tlsx -san -cn -silent -resp-only | dnsx -silent | httpx

샘플: TLS설정 미스 찾기

  • Expired / Self Signed / Mismatched / Revoked / Untrusted Certificate
  • 만료되거나 자기서명증명서이거나 도메인명이 틀리거나 폐지되었거나 신뢰하는 CA에서 발행하지 않은 증명서를 찾아준다.
tlsx -l hosts.txt -expired -self-signed -mismatched -revoked -untrusted

샘플: JSON 출력

  • -json 옵션을 줘서 JSON형식으로 출력할 수 있다.
echo example.com | tlsx -json -silent | jq .

참고

  • https://github.com/projectdiscovery/tlsx?tab=readme-ov-file
  • https://github.com/actions/setup-go/issues/27