정보보안2025. 4. 30. 19:10

웹서비스의 비밀번호 '암호화 알고리즘' 테스트 하는 방법 알아보았어요

 

조건 :

서버 : 리눅스 서버 

조건 : DB ID/비밀번호를 모름

리눅스 서버에 로그인할 수 있는 권한(SSH·sudo 등)가 없음

 

조건(서버 접근 권한 없음, DB 정보 모름) 하에서는 웹 서비스가 사용하는 비밀번호 해싱 알고리즘을 정확히 파악하는 것은 매우 어렵거나 거의 불가능합니다.

 

비밀번호 해싱 알고리즘은 일반적으로 다음과 같은 위치에서 설정되거나 코드 레벨에서 구현됩니다.

  1. 애플리케이션 설정 파일: 웹 애플리케이션의 환경 설정 파일 (예: .env, config.php, settings.py, application.properties 등)에 명시될 수 있습니다.
  2. 소스 코드: 사용자 인증 및 비밀번호 처리 로직이 구현된 소스 코드 내부에 알고리즘이 직접 지정되어 있습니다.
  3. 데이터베이스: 저장된 비밀번호 해시 값의 형식을 보면 어떤 알고리즘이 사용되었는지 유추할 수 있는 경우가 있습니다. (예: bcrypt는 $2a$, $2b$, $2y$ 등으로 시작, SHA-512 crypt는 $6$로 시작)

하지만 주어진 조건에서는 이러한 정보에 접근할 수 없습니다.

  • 서버 접근 권한(SSH, sudo) 부재: 설정 파일이나 소스 코드를 직접 확인할 수 없습니다. 시스템 라이브러리나 설정을 볼 수도 없습니다.
  • DB ID/비밀번호 부재: 데이터베이스에 직접 접속하여 저장된 해시 값의 형식을 확인할 수 없습니다.

제한된 조건 하에서 시도해볼 수 있는 간접적인 방법 (정확도 낮음):

ISO/IEC 25023:2016 표준은 소프트웨어 제품의 보안성(Security)을 포함한 품질 특성을 측정하는 방법을 다룹니다. 비밀번호 저장 방식은 보안성의 중요한 요소입니다. 비록 직접적인 테스트는 불가능하지만, 다음과 같은 간접적인 방법으로 추정해 볼 수는 있습니다.

  1. 웹 서비스 기술 스택 식별:
    • 브라우저 개발자 도구(F12)의 Network 탭에서 HTTP 응답 헤더(예: Server, X-Powered-By)를 확인합니다.
    • 웹 페이지 소스 코드(HTML) 내 주석이나 특정 프레임워크/라이브러리 로딩 코드를 확인합니다.
    • Wappalyzer 같은 브라우저 확장 프로그램이나 온라인 서비스를 사용하여 웹 서버 종류(Apache, Nginx), 사용된 프로그래밍 언어(PHP, Python, Java, Node.js 등), 프레임워크(Spring, Django, Laravel, Express 등), CMS(WordPress, Drupal 등)를 식별합니다.
  2. 식별된 기술 스택의 기본/권장 암호화 방식 조사:
    • 해당 프레임워크나 CMS의 공식 문서 또는 커뮤니티 자료를 검색하여 기본적으로 사용하거나 권장하는 비밀번호 해싱 알고리즘이 무엇인지 확인합니다.
      • 예시: 최신 버전의 PHP는 password_hash() 함수 사용을 권장하며, 기본 알고리즘은 bcrypt입니다. Django는 기본적으로 PBKDF2 (SHA-256)를 사용합니다. Spring Security는 다양한 옵션을 제공하며 bcrypt가 많이 쓰입니다.
    • 만약 해당 웹 서비스가 특정 오픈소스 솔루션을 기반으로 한다면, 해당 오픈소스의 소스 코드를 공개 저장소(예: GitHub)에서 찾아 인증 관련 부분을 분석해 볼 수 있습니다.
  3. 공개된 정보 확인:
    • 해당 웹 서비스의 개발 문서, API 문서, 보안 관련 발표 자료 등이 공개되어 있다면, 여기에 암호화 방식에 대한 정보가 포함되어 있을 수 있습니다.

 

 '암호화 메커니즘 강도'와 같은 보안 관련 품질 속성을 측정하는 것을 목표로 합니다.

 

주어진 제약 조건 하에서는 실제 구현된 알고리즘을 '테스트'하여 파악하는 것은 불가능합니다.

 

대신, 위에서 설명한 간접적인 방법을 통해 사용되었을 가능성이 높은 알고리즘(예: bcrypt, scrypt, Argon2, PBKDF2)을 추정하고, 그 알고리즘이 현재 보안 표준(예: NIST 권고안)에 부합하는 강력한 알고리즘인지 평가하는 방식으로 접근할 수 있습니다.

 

예를 들어, MD5나 SHA-1과 같이 취약한 알고리즘이 사용될 것으로 추정된다면 보안 품질이 낮다고 평가할 수 있습니다.

 

요약 및 한계:

  • 서버 및 DB 접근 권한 없이는 비밀번호 해싱 알고리즘을 정확히 파악하기 어렵습니다.
  • 웹 서비스의 기술 스택(프레임워크, CMS 등)을 파악하고 해당 기술의 기본/권장 방식을 조사하는 것이 최선의 추정 방법입니다.
  • 오픈소스 기반이라면 공개된 소스 코드를 분석해 볼 수 있습니다.
  • 이러한 간접적인 방법은 추정일 뿐이며, 실제 구현과 다를 수 있습니다. 개발자가 기본 설정을 변경했거나 커스텀 로직을 사용했을 가능성이 있습니다.
  • 테스트를 위해서는 실제 구현 방식 확인이 필요하며, 이는 일반적으로 소스 코드 검토나 설정 파일 확인을 통해 이루어집니다. 현재 조건에서는 이 표준에 따른 정확한 테스트는 수행하기 어렵습니다.

가장 확실한 방법은 해당 웹 서비스의 관리자나 개발팀에게 직접 문의하거나, 정식으로 보안 점검을 수행할 수 있는 권한을 확보하는 것입니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터