openSSL

agnusdei·2025년 8월 7일

CTF

목록 보기
62/185

OpenSSL 명령어 토큰별 완전 분석

echo | openssl s_client -servername support.futurevera.thm -connect 10.201.81.37:443 2>/dev/null | openssl x509 -text -noout

파이프라인 구조 분석

1단계: echo |

  • 목적: 빈 입력을 제공
  • 이유: openssl s_client가 대화형 모드로 실행되는 것을 방지
  • 효과: 자동으로 연결 후 즉시 종료

2단계: openssl s_client

openssl s_client -servername support.futurevera.thm -connect 10.201.81.37:443 2>/dev/null

토큰별 분석:

  • openssl: OpenSSL 도구 실행
  • s_client: SSL/TLS 클라이언트 모드 (서버에 연결하는 클라이언트 역할)
  • -servername support.futurevera.thm:
    • SNI (Server Name Indication) 설정
    • 하나의 IP에서 여러 SSL 인증서를 호스팅하는 경우 필요
    • 서버에게 어떤 도메인의 인증서를 요청하는지 알려줌
  • -connect 10.201.81.37:443:
    • 연결할 IP주소와 포트 지정
    • 443은 HTTPS 기본 포트
  • 2>/dev/null:
    • 표준 에러(stderr) 출력을 버림
    • 불필요한 에러 메시지 숨김

3단계: 파이프 |

  • 목적: 첫 번째 명령어 출력을 두 번째 명령어 입력으로 전달
  • 전달되는 데이터: SSL 인증서 정보 (PEM 형식)

4단계: openssl x509

openssl x509 -text -noout

토큰별 분석:

  • openssl: OpenSSL 도구 재실행
  • x509: X.509 인증서 처리 모드
  • -text:
    • 인증서를 사람이 읽을 수 있는 텍스트 형식으로 출력
    • 모든 필드를 상세히 표시
  • -noout:
    • PEM 형식의 원본 인증서 데이터 출력 억제
    • -text 옵션으로 파싱된 결과만 출력

전체 명령어의 동작 흐름

  1. 연결 설정: echo |로 자동 입력 제공하며 SSL 서버에 연결
  2. 인증서 수신: 서버에서 SSL 인증서를 받아옴
  3. 데이터 전달: 받은 인증서를 파이프를 통해 x509 명령어로 전달
  4. 파싱 및 출력: 인증서의 모든 필드를 사람이 읽기 쉬운 형태로 변환하여 출력

핵심 발견사항

Subject Alternative Name 발견:

X509v3 Subject Alternative Name: 
    DNS:secrethelpdesk934752.support.futurevera.thm

이 명령어를 통해 숨겨진 서브도메인을 발견할 수 있었고, 이것이 바로 Subdomain Takeover 공격의 핵심이었습니다.

왜 이 방법이 효과적인가?

1. 완전한 인증서 분석

  • 브라우저나 curl로는 보기 어려운 세부 필드까지 확인 가능
  • SAN, Key Usage, Extended Key Usage 등 모든 확장 필드 분석

2. 자동화 친화적

  • 스크립트에서 사용하기 용이
  • 파이프라인을 통한 연쇄 처리 가능

3. 에러 회피

  • SSL 검증 에러와 관계없이 인증서 정보 획득 가능
  • 2>/dev/null로 불필요한 에러 메시지 제거

보안 관점에서의 의미

이 기법은 Certificate Transparency를 활용한 정보 수집 기법으로:

  • 합법적인 정찰: 공개된 SSL 인증서 정보 활용
  • OSINT: 오픈 소스 인텔리전스의 일종
  • 취약점 발견: 잘못 설정된 인증서에서 추가 공격 표면 발견
profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글