이슈노트 #6: 계정 탈취 이슈
1. 발단
어느날 갑자기 몇명의 유저들로부터, 원하지 않은 출금 처리가 되었다는 제보를 받았다. 유저들 입장에서는 갑자기 돈이 증발한 셈이다.
2. 분석
돈이 사라졌다는 계정의 트랜잭션 기록을 보니, 모두 같은 지갑에 송금을 한 것이 확인됐다.
악의적인 해킹임은 확실했다.
처음에는 우리쪽 데이터가 유출된게 아닌가 노심초사했으나, 로그인 시도 히스토리를 보니 그건 아니었다.
누군가 미친듯이 로그인 시도를 때리고 있었던 것이다.
존재하지도 않는 이메일로 때리는게 있는걸 보니, 다른 서비스에서 유출된 적이 있는 이메일과 패스워드를 조합해서 무차별로 딕셔너리 어택을 날리는 것이었다.
게다가 IP 차단으로 끝낼 수도 없는 것이, 러시아, 홍콩, 파키스탄 등 다양한 지역의 IP로 시도를 하고 있었다. VPN이나 프록시를 통해 계속해서 우회를 하고 있음이 분명했다.
3. 대응
우선 클라우드플레어의 WAF 기능을 사용해 1분에 5번 이상 로그인 시도를 하면 차단을 먹이게 설정을 했다.
일단 이것만 해도 상당한 효과는 있었다. 순식간에 IP 2000여개가 차단당했다.
하지만 상대가 프록시를 돌려쓰고 있기에 이것도 완벽한 방법은 아니었다.
4. 문제
사실 VPN 다중접속을 완전히 막는 것도 불가능하고, 로그인 시도에 제한을 걸고 뭘 하더라도 유출된 패스워드나 만만한 패스워드에 뚫리는걸 아예 막을 수는 없다.
5. 개선
그래서 우리는 가장 크게 문제가 되는 부분인 "출금 처리"에 있어서만 2단계 보안 정책을 적용하기로 했다.
불편하더라도 출금 처리를 시도할때만은 OTP를 통한 추가인증을 강제한 것이다.
6. 결론
패스워드를 멍청하게 쓰는건 어떻게 하려고 해도 해줄 수가 없다. 알아서들 잘 신경쓰자
그리고, AWS나 Cloudflare같은 서비스로 도메인을 쓴다면 WAF의 계정 탈취 방어, rate limit, 봇 탐지 기능 등을 사용해 이런 공격을 상당히 늦출 수 있다. 웬만하면 쓰도록 하자...