패스워드 매니저
패스워드 매니저의 사용배경
최근 기하급수적으로 늘어나는 서비스만큼 사용자가 외워야 하는 계정 정보도 늘어난다. 하지만 보안상의 문제로 인해 여러 계정에서 비밀번호를 재사용하지 않고, 비밀번호를 어딘가에 적지 말 것을 권장한다. 따라서 사용자는 새로운 비밀번호를 외워야 하는 부담에 처한다. 이와 관련해 사용자의 편리성과 보안성을 개선하고자 패스워드 매니저를 대안으로 사용하고 있다.
패스워드 매니저란
사용자의 중요 정보들을 관리 및 보호하며 사용자가 웹 서비스를 편리하게 이용할 수 있도록 도와주는 소프트웨어
사용자의 정보 저장 방식에 따른 분류)
- 브라우저 기반 패스워드 매니저
- 웹 기반 패스워드 매니저
브라우저 기반 패스워드 매니저
브라우저 기반 패스워드 매니저란?
- 개념
사용자의 계정 정보(ex. 도메인 주소, 아이디, 비밀번호)를 사용자의 기기에 저장하는 패스워드 매니저로 사용자의 로그인과 관련된 정보들을 사용자 컴퓨터의 특정경로에 암호화하여 저장한다.
- 사용자의 계정 정보 추출 방식
- 사용자 기기에 저장된 계정 정보 및 암호화 키를 이용하여 비밀번호 복구 프로그램 사용
- 패스워드 매니저가 암호화에 사용한 로직 및 키를 알아내어 계정 정보 추출
- 브라우저 기반 패스워드 매니저 작동 방식
- 사용자가 패스워드 매니저를 사용하기 위해 저장 버튼을 누른다.
- 사용자의 계정 정보(아이디, 비밀번호 등)를 브라우저마다 지정된 특정 경로에 암호화하여 저장
- 사용자가 같은 웹 서비스를 사용하고자 같은 사이트에 접속
- 브라우저 기반 패스워드 매니저는 컴퓨터의 특정 경로에 저장된 사용자의 계정 정보를 복호화
- 웹 서비스 로그인 페이지에 계정 정보 필드를 자동 완성 혹은 저장된 정보를 이용해 로그인을 완료
Google Chrome 패스워드 매니저
- Google Chrome 패스워드 매니저란?
로그인에 사용되는 사용자 계정 정보(아이디, 비밀번호, 로그인 페이지의 URL)를 특정 경로에 부분적으로 암호화하여 저장
- Login Data.sqlite 파일
사용자 로그인 정보를 저장하고 있는 데이터 베이스로, 사용자의 계정 정보와 도메인 정보를 포함하여 서버에서 제공하는 정보들을 저장한다.
DB Browser for SQLite 프로그램으로 Login Data.sqlite 파일의 구성을 확인해보자.
- action_url 필드 : 사용자 정보가 채워질 로그인 페이지의 URL 주소 ▶ 평문 형태
- username_value 필드 : 사용자 계정에 대한 아이디 ▶평문 형태
- password_value 필드 : 사용자 계정에 대한 비밀번호 ▶ BLOB 형태로 암호화
※ BLOB란? : Binary Large Object의 약자로 일련의 데이터를 처리하거나 간접 참조하는 객체이다. BLOD는 대개 바이트의 크기를 알아내거나 해당 MINE 타입이 무엇인지 요청하며, 데이터를 작은 BLOD으로 잘게 나누는 등의 작업에 사용된다. 즉, 데이터 자체라기보다는 데이터를 간접적으로 접근하기 위한 객체이다.
[참고 자료] https://uxicode.tistory.com/entry/Blob-%EA%B0%9D%EC%B2%B4
Mozilla Firefox 패스워드 매니저
- Mozilla Firefox 패스워드 매니저란?
로그인에 사용되는 사용자 계정 정보(아이디, 비밀번호, 로그인 페이지의 URL)를 파일로 특정 경로에 저장
- Mozilla Firefox 패스워드 매니저의 특징
Mozilla Firefox 패스워드 매니저는 버전에 따라 저장 방식이 상이하다.
- Firefox 3.5 이전 버전 : key3.db 파일에 마스터 비밀번호와 암호화 키를 보관하고 signos 파일에 암호화된 아이디와 비밀번호 저장
- Firefox 3.5 이후 버전 : key3.db 파일에 마스터 비밀번호와 암호화 키를 보관하지만, signos.sqlite 데이터베이스 파일에 암호화된 아이디와 비밀번호 저장
- Firefox 32.0 버전 : signos 형식 대신 logins.json 형식을 통해 사용자의 계정 정보를 저장
- Firefox 32.0 이후 버전 : logins.json 파일에 사용자 정보를 저장 시, 로그인 페이지에 대한 URL 주소를 평문 형태로 저장했지만, 사용자 아이디와 비밀번호는 암호화한 형태로 저장
Internet Explorer 패스워드 매니저
- Internet Explorer 패스워드 매니저란?
로그인에 필요한 사용자 계정 정보들(아이디, 비밀번호 등)을 레지스트리에 저장
- Internet Explorer 패스워드 매니저의 특징
사용자의 계정 정보를 저장하는 레지스트리의 경로가 버전에 따라 저장되는 위치가 상이하다.
- Internet Explorer 4.0 ~ 6.0 버전 : 로그인 계정 정보를 Protected Storage System Provider 레지스트리에 저장
- Internet Explorer 7.0 버전 이후 : 로그인 계정 정보를 이전 버전과 다른 레지스트리에 저장
웹 기반 패스워드 매니저
웹 기반 패스워드 매니저란?
- 개념
사용자의 아이디와 비밀번호를 서버로부터 얻은 키로 암호화하여 사용자의 계정 정보를 저장 및 관리한다.
- 웹 기반 패스워드 매니저 작동 방식
- 확장 프로그램을 설치하거나 웹 사이트에 접속하여 해당 패스워드 매니저에 접속
- 사용자의 마스터 아이디와 비밀번호를 사용하여 패스워드 매니저에 로그인
- 사용자는 이용하고자하는 서비스에 대한 로그인 계정 정보를 검색
- 로그인 계정 정보를 활용하여 이용하고자하는 서비스에 로그인 ▶ 패스워드 매니저가 해당 서비스의 로그인 양식을 자동으로 채워줌
LastPass
- LastPass란?
라스트패스(LastPass)는 개인 계정에 암호화된 암호를 저장하는 프리미엄 암호 관리자 서비스이다. 북마크릿 기능, 웹 서비스, 확장 프로그램 등을 통해 서비스를 제공한다. ID, 암호 등의 정보를 저장하면 사용자의 컴퓨터에서 사용자의 암호로 암호화되어 LastPass 서버로 전송·저장된다.
- 장점 : 언제 어디서든 LastPass에 로그인하면 저장된 정보를 불러올 수 있어 편의성이 좋다.
- 단점 : 중앙 서버가 해킹당하면 모든 비밀번호가 털릴 가능성이 있다. 당사 홈페이지에 따르면 다중 암호화 체계를 통해 비밀번호 정보가 암호화되어 있어 안전하다고 하지만, LastPass가 여러차례 해킹 당한 사례가 있다.
- LastPass의 특징
라스트패스의 사용자 콘텐츠는 하나의 마스터 암호로 보호된다. 콘텐츠는 사용자가 사용하는 모든 장치에 동기화된다. 또한, 구글 크롬, 모질라 파이어폭스, 애플 사파리,마이크로소프트 엣지, 오페라를 포함한 수많은 웹 브라우저에 대한 확장 기능으로 이용 가능하다. 라스트패스는 안드로이드, iOS, 윈도우 폰 운영 체제를 구동하는 스마트폰에서 사용이 가능하다.
[참고자료]
- https://namu.wiki/w/LastPass
- https://ko.wikipedia.org/wiki/%EB%9D%BC%EC%8A%A4%ED%8A%B8%ED%8C%A8%EC%8A%A4
- https://www.websiterating.com/ko/password-managers/lastpass-review/
- LastPass의 해킹 사례
지난 22년 8월 29일 전 세계 사용자가 2,500만명이 넘는 비밀번호 관리 서비스 라스트패스에서 데이터 침해 사고가 발생했다. 회사는 공격자들이 개발 환경에 침투한 것으로 보이며, 이를 통해 소스코드 일부를 가져갔다고 밝혔다. 하지만 사용자의 마스터 비밀번호는 무사하다고 업체 측은 전했다.
[관련 기사] https://www.ciokorea.com/news/252094
- LastPass에서 사용하는 암호화 방식
1. RSA-2048
수신자의 공개 키를 가져오고 비밀번호 보관소의 키를 통합하여 RSA 암호화를 통해 고유한 키를 만든다. 암호화된 키는 수신자의 개인 키로만 열 수 있으며, 수신자의 공개 키와 공유하는 공통 마커로 인해 인식되고 허용됨.
▶ RSA 암호화 방식 : 공개키를 이용하는 대표적인 암호화 방식으로 전자 서명이 가능한 최초의 알고리즘이다.
[참고 자료] https://www.holaxprogramming.com/2017/06/12/encryption-with-rsa/
2. 종단간 암호화(E2EE)
E2EE는 전송 중인 정보만 암호화한다. 따라서 공격자가 사용자의 계정 정보에는 접근할 수 있지만, 실제 정보를 보는 것이 아닌 해독할 수 없는 수많은 코드들을 보게 된다.
▶ 종단간 암호화 (E2EE, End to Encryption)
메시지를 보내는 곳부터 받는 곳까지 모든 과정에서 암호화된 상태로 메시지를 전달하는 암호화 방식을 말한다. 종단간 암호화를 사용할 경우, 양 끝에 있는 사람 즉, 메시지를 발송하는 사람과 수신하는 사람만 볼 수 있으며 중간에 있는 그 누구도 메시지를 볼 수 없다.
[참고 자료] http://wiki.hash.kr/index.php/%EC%A2%85%EB%8B%A8%EA%B0%84_%EC%95%94%ED%98%B8%ED%99%94
3. AES-256 암호화
LastPass는 AES-256 암호를 사용하여 제공된 정보를 암호화한다. 비밀번호가 라스트패스에 입력되면 암호화되고, 지정된 서버에 도달하면 암호화된 상태로 유지된다.
▶ AES : 암호화 및 복호화 시 동일한 키를 사용하는 대칭키 알고리즘으로, 숫자 키의 길이로 종류가 나눠진다. AES의 종류는 AES-128, AES 192, AES-256이 있다.
[참고 자료] https://bamdule.tistory.com/234
RoboForm
- RoboForm이란?
북마크릿, 확장 프로그램과 같은 패스워드 매니저가 제공하는 대부분의 기능들을 가지고 있다. RoboForm은 사용자의 로그인 계정 정보를 저장할 때 웹 애플리케이션의 이름이 붙여진 파일에 저장되는 것이 특징이다.
- RoboForm에서 사용하는 암호화 방식
1. AES 256 암호화 with PBKDF2 SHA256
로보폼은 사전, 무차별 공격 또는 기타 공격으로부터 보호하기 위해 PBKDF2 SHA256과 함께 AES256 비트 암호화를 사용한다. PBKDF2는 암호를 salt로 해시하는데 사용되는 키 스트레칭 알고리즘이다.
▶ PBKDF2 (Password-Based Key Derivation Function)
ISO-27001 보안 규정을 준수하고 있는 표준 암호화 알고리즘이다. PBKDF2WithHmacSHA1, PBKDF2WithHmacSHA256, PBKDF2WithHmacSHA512 알고리즘을 이용하여 암호화 키를 만드는데, 랜덤함수로 생성된 salt값과 password를 ITERATION_COUNT만큼 키스트레칭한 값을 SecretKey로 갖는다.
[참고 자료] https://blog.jiniworld.me/172
브라우저 기반 패스워드 매니저 문제점 분석
패스워드 매니저는 계정 정보와 암호화 키가 사용자 컴퓨터 내부에 저장된다는 점에서 공격자에게 사용자의 계정 정보가 유출될 위험이 있다. 비밀번호 복구 프로그램을 사용하면 사용자의 계정 정보를 복호화된 평문 상태로 획득할 수 있다. 뿐만 아니라 암호화 방식에 대한 지식이 있는 공격자가 웹 브라우저에서 제공하는 패스워드 매니저의 사용자 계정 정보 저장 경로와 암호화 방법 및 키를 알고 있다면 암호화되어 저장된 사용자의 모든 계정 정보들을 획득할 수 있다.
Google Chrom 패스워드 매니저 문제점
username_value와 action_url 필드의 경우 암호화되지 않는 평문 상태로 Login Data 파일에 저장된다. 그러나 비밀번호는 윈도우즈에서 제공하는 DPAPI 함수를 사용해 action_url 필드를 인자로 사용하여 암호화한 후 Login Data 파일에 저장한다. 따라서 공격자가 action_url 필드 정보를 안다면 CryptUnprotectData 함수를 사용해 복호화할 수 있다.
▶ DPAPI (Data Protection Application Programming Interface)
윈도우즈 운영체제에서 제공하는 데이터 보호 API로, 3DES, AES256 암호 알고리즘을 사용한다. DPAPI 장점은 다음과 같다.
- 간편한 API
- CryptProtectData() : DPAPI를 이용해 데이터를 암호화하는 함수
- CryptUnProtectData() : DPAPI를 이용해 데이터를 복호화하는 함수
- 강력한 DPAPI의 키 및 암호
- 사용자 로그온 암호를 사용하여 사용자 자격 증명에 활용
- 백업 메커니즘
- AD 환경 차원에서 도메인 전체 공개 / 개인 키 백업
[참고 자료] http://blog.plainbit.co.kr/wp-content/uploads/2018/08/F-INSIGHT-About-DPAPI.pdf
Mozilla Firefox 패스워드 매니저 문제점
Firefox 패스워드 매니저는 저장된 사용자의 로그인 정보를 보호하기 위해 마스터 비밀번호 기능을 제공하지만, 기본 설정일 경우 마스터 비밀번호 기능은 사용되지 않는다.
따라서 위 이미지와 같이 Mozilla Firefox의 패스워드 매니저는 웹 브라우저의 설정 옵션을 통해 '암호 보이기' 기능을 사용하여 사용자의 계정 정보를 평문 상태로 보여준다.
Internet Explorer 패스워드 매니저 문제점
레지스트리에 저장하는 Internet Explorer 패스워드 매니저는 윈도우즈 자격 증명을 이용하여 사용자 인증을 요구한다. 따라서 윈도우즈의 자격 증명을 모르는 공격자들은 쉽게 사용자의 계정정보를 확인할 수 없다.
하지만 레지스트리에 저장된 비밀번호는 SHA-1 해시함수를 사용하여 암호화 하는데, URL 주소를 해싱한 값을 키로 사용한다. 이때, 윈도우즈에서 제공하는 DPAPI 함수를 이용하여 키를 생성한다. 그러나 비밀번호를 암호화한 키가 사용자 기기에 저장되었기 때문에, 레지스트리에 저장된 레코드를 통해 복호화할 수 있다.
웹 기반 패스워드 매니저 문제점 분석
웹 기반 패스워드 매니저는 웹을 통해 서비스를 제공하기 때문에 웹 취약점에 노출되어 있다.
자동 완성 기능에 대한 문제점
일부 패스워드 매니저들은 기존에 저장된 로그인 페이지 방식과 다른 상태의 로그인 페이지가 감지됨에도 불구하고 자동으로 로그인 필드를 완성하는 문제점이 발견되었다. 이를 방지하기 위해 HTTPS 인증서에 오류가 있는 특정 조건에서 패스워드 매니저가 로그인 필드에 자동 채우기를 수행하지 않도록 권장한다.
사용자가 로그인 계정 정보를 저장했을 때, 로그인 버튼에 대한 차이를 감지하지 못하는 일부 패스워드 매니저의 경우 이러한 문제점을 통해 악의적인 JavaScript 코드를 실행하여 정보를 탈취할 수 있다. 따라서 구글 크롬 등과 같이 신뢰할 수 있는 브라우저의 사용을 권장한다.
[자동 완성 기능 문제점 관련 참고하면 좋은 논문]
https://www.usenix.org/system/files/conference/usenixsecurity14/sec14-paper-silver.pdf
CSRF 및 XSS 공격에 대한 취약성
공격자는 성공적인 사이트 간 요청을 위조하는 공격인 CSRF를 활용하거나 사이트 간 스크립팅 공격인 XSS을 이용하여 패스워드 매니저가 다루는 사용자의 계정 데이터를 읽고 누출시킬 수 있다.
▶ CSRF (Cross-site request frogery) : 사용자의 의도와 상관없이 공격자가 원하는 행위를 특정 웹사이트에 요청하도록 하는 공격
▶ XSS (Cross-site scripting) : 공격자가 웹 페이지에 악의적인 스크립트를 삽입할 수 있는 취약점
'Security > Web hacking' 카테고리의 다른 글
[웹해킹 기초] Webpack (0) | 2023.09.23 |
---|---|
[논문 분석] 패스워드 매니저의 클라이언트-서버 통신 취약점 분석 (0) | 2023.02.01 |
실전 웹 모의해킹 (0) | 2023.01.14 |
XSS 공격 (0) | 2023.01.13 |
SQL 인젝션 공격 (1) (0) | 2023.01.09 |