이 글에서는 SNS 계정 해킹이 대부분 어떻게 이루어지고 그것을 사전에 방지하는 방법에 대해서 배웁니다.


계정 해킹은 대부분 사용자 과실입니다

많은 사람들이 “계정 해킹을 당했다”, “계정 해킹으로 내가 한 짓이 아니다” 등 SNS 계정을 해킹당했다며 용서를 구해오는 경우가 정말 많습니다. 하지만 이러한 해킹은 실제로 해커에게 자신이 직접 해킹을 할 수 있도록 한 경우가 대부분이고 해커에게는 이러한 방식이 오히려 훨씬 쉽습니다. 그 이유를 말하자면 정말로 단순합니다. 여러분이 알 수 없는 애플리케이션 혹은 프로그램이 여러분의 계정을 액세스할 수 있는 권한을 ‘승인’했기 때문입니다. 아니라면 여러분의 비밀번호에 이름, 생년월일 등 비교적 쉽게 노출되는 정보가 포함되어 있기 때문이기도 합니다.

여러분이 승인한 악성 애플리케이션이 정보를 가져오는 방식

사실 이러한 시스템은 여러분의 정보가 쉽사리 빠져나가지 않게 설계되었습니다. 컴퓨터 혹은 휴대전화에 악성 코드가 설치되어 있지 않는 이상은 여러분이 직접 손으로 ‘승인’ 혹은 ‘확인’ 버튼을 눌러야 실제로 여러분의 정보가 제공됩니다. 이 시스템의 이름은 ‘Open Auth’, 줄여서 ‘OAuth’라고 합니다. 본래의 목적은 타 사이트에서 특정 사이트의 계정으로 로그인할 수 있도록 해주는 것입니다. 예를 들자면 특정 사이트에 로그인하기 위해서 Google이나 Apple 계정을 쓰는 것이 대표적입니다.

악성 애플리케이션이 만들어지는 과정은 의외로 정말로 단순합니다. 이러한 웹 시스템에 익숙한 개발자라면 누구나 30분이 채 걸리지 않게 악성 웹 사이트를 만들어 정보를 빼내려 시도할 수 있습니다. 여러분이 Twitter를 통해 악성 애플리케이션에 영향을 받는 것을 예로 들겠습니다. 간단히 아래와 같은 과정을 거치게 됩니다.

  1. 여러분은 갑작스럽게 모르는 계정에게 개인메세지 혹은 멘션 등 메세지를 전송받아 첨부된 링크를 클릭하도록 유도됩니다.
  2. 해당 링크에서 여러분은 다시 Twitter의 웹 사이트로 이동되며 어떤 앱이 여러분의 계정에 접근 권한을 얻고 싶다는 메세지를 보게 됩니다. 하지만 이에 대해서 어떠한 경계심도 가지지 않고 ‘승인’ 버튼을 누릅니다.
  3. 악성 애플리케이션은 여러분이 권한을 승인함으로써 여러분의 계정에 액세스할 수 있는 이른바 “일회용 비밀번호”를 받게 됩니다.
  4. 악성 애플리케이션은 받은 “일회용 비밀번호”를 저장하고 그것을 사용해 여러분이 여러분의 계정에 입력한 개인정보를 가져오고 비밀번호, 설정 등을 변경합니다.

다만 Twitter의 경우에는 예외가 있습니다. Twitter의 애플리케이션들은 개발자가 애플리케이션이 할 수 있는 범위를 세심하게 제한할 수 없습니다. 즉, 트윗 하나를 쓰고 싶음에도 불구하고 쪽지까지 쓸 수 있는 권한을 요청해야 한다는 것입니다.

여러분의 취약한 비밀번호가 직접 대입되는 방식

위의 문단과 같이 이상한 링크를 클릭하지 않았음에도 불구하고 여러분의 계정은 여전히 위험할 수도 있습니다. 해커들은 위 방식에 그치지 않고 세계 여러곳에서 만들어진 “가능성이 있는 비밀번호”의 목록을 다운로드합니다. 이 목록에는 여러분이 비밀번호를 이렇게 지었을 것이라고 예측한 문장이나 단어들이 있습니다.

예를 들면 비밀번호를 만들기 귀찮은 사람은 ‘Password’라는 단어를 비밀번호에 그냥 써버렸을 수도 있습니다. 하지만 이러한 목록에는 ‘Password’와 같은 단어는 물론이고 복잡한 패턴까지도 포함되어 있습니다. 그래서 여러분은 쉽게 추측될 수 있는 단어를 비밀번호에 쓰면 안 됩니다. 예를 들어서 이름이나 이메일 주소의 앞 부분(‘@’ 앞 부분)을 비밀번호에 포함하는 것만으로도 해커는 더 적은 횟수의 시도로 여러분의 비밀번호를 알아낼 수 있습니다. 이 것을 ‘무작위 대입법’이라고 합니다.

비밀번호로 충분하지 않다면 여러분의 기기로 직접

혹시 저러한 문작위 대입법에 불안을 떨고 있을 사람들을 위해서 개발자들은 또 새로운 시스템을 제안했습니다. 바로 ‘2단계 인증’ 혹은 ‘2차 인증’이라는 시스템입니다. 영어로는 ‘2FA’, ‘Two Factor Authentication’ 등으로 불리고 있습니다. 혹시 휴대전화에 ‘Microsoft Authenticator’ 혹은 ‘Google OTP’ 등의 앱이 설치되어 있다면 이미 사용하고 있는 것일 수도 있습니다. 2단계 인증 시스템은 모든 SNS에서 도입하고 있지는 않지만 대부분 도입이 되었을 것입니다. 또한 활성화하면 기존보다는 비교도 안 될 정도의 보안을 손에 넣게 됩니다. (물론 위에서 말한 ‘승인’ 버튼으로 발급해준 일회용 비밀번호는 이것을 무시합니다)

2차 인증은 여러분이 ID 혹은 이메일 그리고 비밀번호로 웹 사이트에 로그인 한 다음 여러분의 2FA 애플리케이션이 일정한 규칙을 가진 6~8자리의 숫자를 특정한 시간마다 발급해준 것을 추가로 입력하는 것입니다. 실제로 이렇게 된다면 공격자는 비밀번호를 알아도 여러분의 휴대전화가 없다면 로그인조차 할 수 없게 됩니다.

이러한 시스템과 유사한 방법을 쓰는 것으로 Steam Guard가 있습니다. Steam Guard는 휴대전화 대신 이메일을 사용합니다. 그래서 여러분의 이메일을 담당하는 서비스인 Gmail, Outlook의 보안이 보장되는한 휴대전화와 같은 효과를 누릴 수 있습니다. 실제로 게이븐은 Steam Guard를 전세계에 공개할 때 자신의 개인 계정 비밀번호도 함께 공개했습니다만 실제로는 아무도 그의 계정에 로그인하지 못했습니다.

2단계 인증에는 다른 한 면이 더 있습니다. 만약에 2단계 인증 수단(예: 휴대전화)을 잃어버리게 되면 더 이상 자기자신도 계정에 액세스할 수 없게 되니 주의하세요. 휴대전화의 초기화는 반드시 2단계 인증을 먼저 해제한 뒤에 하셔야 합니다.

비밀번호를 못 외우겠어요

무작위 대입법을 피하기 위한 방법으로는 모든 사이트의 비밀번호를 다르게 설정하는 방법이 있습니다. 하지만 이는 정말로 우리의 머리에 크나큰 무리를 줄 수 있고 실제로도 무리가 아닐까 합니다. 그래서 몇몇 회사들은 여러분의 비밀번호를 무작위로 생성하고 안전하게 저장하는 프로그램을 개발했습니다. 이런 프로그램은 여러분이 직접 지정한 ‘마스터 키’없이는 기본적으로 비밀번호를 공개하지 않습니다.

이미 수많은 서비스가 있습니다. 백신만 깔아도 수많은 ‘비밀번호 관리자’가 추천됩니다. 그렇기 때문에 여기에서는 그 중에 보안이 완벽하지 않거나 신뢰할 수 없는 회사만 나열하겠습니다. 잘 피해서 사용하시면 됩니다.

만약에 사용하는 비밀번호 관리자가 해킹이 되었다면 당장 관리자 비밀번호(마스터 패스워드)를 변경하여 전체 비밀번호를 다시 암호화하게 해야 합니다.