질문이 있으십니까?

기본 컨텐츠 및 사용자가 직접 참여하여 만들어진 다양한 내용을 검색합니다.

브루트 포스 공격(Brute Force Attack)에 대한 대비

용어설명

우리말로 무작위 대입 공격이라 부릅니다. 주로 암호학에서 쓰이지만 다양한 방면에서 활용됩니다. 구글의 알파고와 이세돌 9단의 바둑 대국에서 브루트 포스가 훈수를 뒀다는 의문이 제기되면서 이슈로 떠올랐습니다.
브루트 포스(Brute Force)는 조합 가능한 모든 경우의 수를 다 대입해보는 것입니다. 최적화나 효율과는 거리가 멀다고 볼 수 있습니다. 단순한 방법으로 보이기도 하지만 사실 정확도 높습니다. 이론적으로 모든 가능한 수를 점검해 보니 실수가 없습니다. 암호학에서도 가장 확실한 방법으로 통하는 이유입니다. 완벽한 병렬 작업이 가능한 것도 장점입니다. 한 대의 컴퓨터로 10일 걸릴 작업을 10대를 쓰면 하루 만에 끝낼 수 있습니다.
가령 4자리 비밀번호의 경우 0000에서부터 9999까지 1만 개의 비밀번호를 일일이 암호 폼에 입력해 일치하는 값을 알아내는 방법입니다. 과거 영화에서 볼 수 있던 장면입니다. 암호를 알아내기 위해 수많은 숫자를 스크롤링하는 장면은 바로 브루트 포스를 이용한 해킹인 것입니다.

방어1. GET, POST 전달값 암호화

http://m.zioyou.com/Sche/ScheCrdDay_View?csrf=eyJ0b2tlbiI6IjIwMTgtMDMtMDUgMDI6 MTA6MDQiLCJDcmRObyI6IjE0NTgiLCJWaW V3RGF0ZSI6IjIwMTgwMzA0IiwiVmlld1NlcSI6 IjIiLCJNYWluVHlwZSI6Ik0ifQ==
위의 웹 사이트에 접속할 때 전달되는 인자값은 csrf입니다. 이 값을 위 변조 하지 못하도록 128Bit 상호Key가 존재하는 방식의 암호화 알고리즘을 사용하여 전달하도록 조치하였습니다. 웹 페이지로 전달되는 값은 공격자가 중간에 가로채거나, 나중에 알게되더라도 위 변조를 해서 보낼 수 없습니다. 이유는, 해독할 수 없기 때문입니다.

방어2. 암호화 해독하더라도 DB단에서 열람권한 체크

위 암호화 알고리즘은 128Bit 키Key가 필요한 방식이라고 설명드렸습니다. 그러나, 이 또한 해킹하여 위 전달값을 다른 값으로 변경하더라도 수신하는 웹페이지 쿼리하는 데이타베이스에서 제일먼저 해당 전달값이 열람 가능한 컨텐츠인지 다시 한번 체크합니다. 이는, 같은 회사의 동료의 인자값을 훔치더라도 열람 데이타가 아니라고 웹페이지가 밷어내게 됩니다. 즉, 브루트 포스 전형적인 값을 변경해가며 공격하더라도 이중으로 체크하는 기능 때문에 열람이 불가능합니다.

방어3. 동일한 URL 지속적 호출 시, 해당 IP 강제 차단

브루트 포스 공격은 URL에 전달되는 값을 지속적으로 바꿔가며 공격하는 패턴이기 때문에 D-Dos 공격으로 이어질 수 있습니다. 즉, 정상적인 사용자라면 이렇게 호출 될 수가 없습니다. 비정상적인 호출이 특정 시간, 특정 횟수 이상으로 호출 할 때, 수신 프로그램은 이를 체크합니다. 시간도 체크하고 호출 횟수도 체크합니다. 우리가 지정된 Limit을 초과했을 경우, 시스템을 접근하지 못하도록 조치합니다. 기본적인 차단은 페이지 상단에서 밷어내는 방식이며 두번째는 방화벽단에서 접근자체를 차단하게 돕니다. 공유기를 사용하는 회사 내부에서는 이럴 경우, 모두 차단될 수 있습니다.

적용시기

2016년 02월17일 오후 23시22분입니다.
위 방어1, 2, 3의 업그레이드 및 추가적인 보안 수단 업데이트는 다른 지면을 통해서 안내하겠습니다.

댓글을 작성하세요

문서 이력