'마지노선 전투'에 해당되는 글 1건

보안과 해킹

생활상식 2022. 8. 16. 23:26

보안 시리즈 1 - 비밀번호가 뚫리는 이유

가끔씩 로그인을 하다보면 해외에서 시도한 로그인을 차단했다는 문구를 볼 때가 있다. 
또는 로그인을 하지도 않았는데 인증 확인 메일이 오는 경우도 있다. 
그들은 내 비밀번호를 대체 어떻게 알아냈을까?

방법

크래커(흔히 알고 있는 해커인데 나쁜짓을 하는 해커라고 보면 된다)가 회원의 비밀번호를 탈취하는 방법은 꽤 많은 방법이 있다. 
여기서 문제는 비밀번호를 보호해야 하는 책임이 홈페이지 관리자에게 있는 경우가 대부분이지만 반대로 그렇지 않은 경우도 있다. 
기본적인 원리와 함께 비밀번호를 보호하기 위해서는 어떻게 해야 하는지 약간의 프로그램 지식과 함께 알아보고자 한다.

마지노선 전투 - 백도어(Backdoor)

2차 세계대전에서 프랑스는 독일이 침공하지 못하게 대규모 방어선을 구축했다. 
막강한 방어선을 구축한 것을 안 독일은 정면으로 이를 돌파하지 않고 그냥 우회했다.

이런 이야기는 개발자의 세계에서도 통한다. 
백도어라는 이야기를 들어 보았을 것이다. 
백도어는 정상적인 방법으로 접근하지 않고 우회하는 방법을 말한다. 
백도어는 범위가 넓기 때문에 정상적인 방법을 우회한 것을 통틀어 백도어라고 한다. 

홈페이지를 운영하는 서버에 침투하기

크래커는 여러가지 보안 취약점을 알고 있다. 
우리가 사용하는 윈도우즈가 자주 업데이트 되는 이유중 하나는 보안 취약점을 발견하고 방어하기 위한 소스코드를 업데이트 하는 것이다.

그런데 이런 업데이트는 개개인이 사용하는 운영체제에만 해당되는 것은 아니다. 
홈페이지를 운영하는 서버 역시 보안 업데이트가 필요할 수 있으며 버전이 오래되어 더 이상 업데이트가 지원되지 않는 운영체제를 사용한다면 서버에 접근할 수 있게 된다. 
우리가 접속하는 홈페이지는 일반적으로 www.naver.com 같이 사람이 읽을 수 있는 주소로 되어 있는데(DNS) 실제로는 IP로 된 컴퓨터의 주소에 해당된다.

보안에 신경쓰지 않은 홈페이지는 해당 IP에 접근하여 관리자 쉘에 로그인 할 수 있으며, 소스코드를 열어볼 수 있게 된다. 
소스코드 내부에는 데이터베이스 접속 주소와 암호가 적혀 있을 것이고 크래커는 그 주소를 이용하여 홈페이지에 가입된 회원의 개인 정보를 가로챌 수 있다.

 


현재는 이런 시스템으로 된 홈페이지는 사실상 거의 없지만 소수의 홈페이지는 여전히 이런 보안에 취약하기 때문에 이런 취약한 홈페이지에 가입을 한 적이 있다면 내 개인정보를 빼앗기게 되는 것이다.

이 때 제목과 같은 문제가 발생할 수 있다. 
홈페이지 개발자는 회원의 비밀번호, 전화번호 등 민감한 개인정보를 암호화 해서 해독하기 어렵게 만들어 놔야 한다. 
특히 비밀번호는 해시 함수를 이용하여 다시 원래의 비밀번호가 무엇인지 알 수 없게 만들어야 한다.

얻어낸 아이디 비밀번호로 다른 사이트에 로그인 해보기

만약 이 비밀번호가 암호화 되어 있지 않다면 이제 크래커는 얻어낸 아이디와 비밀번호를 이미 알려진 수 많은 웹사이트에 로그인 시도를 해본다. 
네이버, 다음, 구글 기타 등등의 모든 존재하는 웹사이트에 프로그램으로 돌려본다. 
왜 이렇게 할까?

사람들은 비밀번호를 사이트마다 다르게 해 두면 기억하기 어렵기 때문에 대부분 동일한 아이디와 비밀번호를 사용하기 때문이다.

그래서 홈페이지들이 사용한 방법은 자신이 늘 로그인 하던 장소가 아닌 다른 장소(IP)나 다른 기기에서 로그인을 하게 되면 추가 메일 인증을 받도록 해 둔 것이다.

사실 실제로 비밀번호가 노출되어 피해를 입으려면 적어도 아래와 같은 단계가 모두 이루어져야 한다.

1.홈페이지의 쉘 접근 권한이 공개되어 있고

2.사용하는 운영체제의 보안 업데이트를 하지 않았으며

3.소스코드가 쉽게 노출되어 있는 언어로 만들어져 있고

4.연동한 데이터베이스가 분리되어 있지 않거나 데이터베이스 마저 접근 권한이 모두에게 공개되어 있고

5.사용자의 비밀번호가 암호화 되어 있지 않아야 하고

6.마지막 로그인이 의심스러운 곳에서 발생하는지 검증하지 않아야 한다.

위 조건 중 단 하나라도 만족하지 않으면 해킹하기는 어려워진다(그렇다고 불가능한 것은 아니다). 
하지만 아직도 정말로 위의 조건을 모두 만족하는 엉성한 홈페이지는 존재하고 그 소수의 홈페이지에서 비밀번호를 가로채면 이제 그 아이디와 비밀번호는 알 수 없는 크래커 커뮤니티에서 돈을 받고 거래되기 시작할 것이다.

​결론

한번 거래된 아이디와 비밀번호는 새로운 웹사이트가 생겨날 때마다 늘 누군가가 시도해볼 것이므로 계속 사용해선 안 된다. 
이것이 비밀번호가 자주 뚫리는 이유이다.

주기적으로 비밀번호를 변경하라는 이유 역시 마찬가지의 이유이며 홈페이지마다 서로 다른 비밀번호를 가지고 있다면 이러한 문제에서 해방될 수 있다. 
크롬등 브라우저의 비밀번호 기능이나 lastpass같은 별도 암호관리 플러그인에서 강력한 비밀번호를 추천하는 이유 역시 
사이트마다 다른 비밀번호를 저장하게 함이다.

※ 출처 - 보안 시리즈 1 - 비밀번호가 뚫리는 이유

 

보안 시리즈 1 - 비밀번호가 뚫리는 이유

서론 가끔씩 로그인을 하다보면 해외에서 시도한 로그인을 차단했다는 문구를 볼 때가 있다. 또는 로그인을...

blog.naver.com

 

 


보안 시리즈 2 - 비밀번호를 왜 복잡하게 설정하라고 할까?

회원가입을 하다보면 비밀번호를 입력하는 절차는 거의 대부분 서비스의 절차 중 하나이다. 
그런데 손쉬운 비밀번호로 적으면 비밀번호를 외우기도 쉽고 적기도 편할텐데 그렇게 하면 홈페이지는 자꾸만 숫자를 섞으라고 하고 특수문자를 섞으라고 한다. 

어떤 곳은 글자 수 10자 이상에 대문자와 특수문자를 모두 섞어서 만들어야 한다고 한다.
대체 왜 그런 걸까?

무차별 대입 공격 - brute force attack

비밀번호가 4자리 숫자인 자물쇠를 생각해보자. 
모르는 사람의 자물쇠고 이제 이 자물쇠를 해제해야 한다고 생각해보자. 
그리고 주변엔 아무도 없다.

가장 먼저 단순하게 생각해 볼 수 있는 방법은 누구나 떠올릴 수 있다. 
그렇다. 
0000부터 9999까지 입력해보는 것이다. 
컴퓨터 역시 마찬가지 방법을 이용할 수 있다. 
이러한 공격 방식을 무차별 대입 공격(brute force)라고 한다. 
brute 라는 뜻은 짐승 같은 이라는 뜻을 가지고 있는데, 
마치 거대한 맹수가 문을 부수기 위해 부숴질 때까지 두드리며 공격한다고 생각하면 이해하기 쉬울 것이다. 
비밀번호가 뚫릴 때까지 공격하려고 하기 때문이다.

간단한 프로그램을 통해 이전에 입력했던 비밀번호는 다시 시도하지 않고, 
매우 빠른 속도로 한 자리부터 대입을 해보기 시작한다. 
a, b, c ... X, Y, Z... 8, 9, 0. 모두 실패했으면 이제 두 자리로 넘어간다. 
이렇게 해서 성공할 때까지 컴퓨터는 멈추지 않는다.

영화에도 나오는 단골 소재인데 숫자들이 빠르게 변화하면서 뭔가 하나씩 맞춰지는 장면을 많이 볼 수 있다. 
그런데 이런건 영화적인 연출이고 애초에 이 비밀번호 방식은 몇 번째 자리가 맞았는지 유추하는 방법은 없다.

그런데 이 방법은 아무래도 좀 비효율적인 방법이라고 볼 수 있다. 
같은 방식의 무차별 대입 공격이지만 조금 더 그럴싸한 비밀번호들을 우선적으로 대입해볼 수 있지 않을까? 
예를 들면 아이디와 비밀번호가 동일하다거나, 
1234, qwer 같은 사람들이 흔히 쓸법한 비밀번호를 먼저 시도해보면 뚫리지 않을까?

그래서 나온 방법이 사전 공격이다.

사전 공격 - dictionary attack

사전 공격은 위에서 설명했듯이 사람들이 이미 자주 사용하는 아이디와 비밀번호를 사전처럼 모두 정리해둔 다음에 그것을 우선적으로 시도해보는 것이다. 
이런 비밀번호 리스트는 크래커들의 집단에선 계속적으로 업데이트 하고 있을 것이며 지금도 쓸모가 있는 방법이다. 
나중에 좀 더 자세히 설명하겠지만 아이디 비밀번호만의 인증으로는 이 사전 공격 때문에 한계가 생긴다.

아무리 어렵게 설정하라고 이야기 해도 사람들은 최대한 쉬운 비밀번호를 설정하려고 하고, 
홈페이지 개발자가 제한을 낮게 설정하면 할수록 크래커의 공격 대상이 되기 쉽기 때문이다.

​대비책 - 비밀번호가 복잡해야 하는 이유

그럼 홈페이지 혹은 다른 서비스 운영자의 입장에서 이런 시도를 하려면 어떤 방어를 준비해야 할까? 
현대의 서비스들은 그래서 다음과 같은 조치를 취하고 있다. 
이 조치들은 가급적 모두 지켜야 하며 그렇지 않으면 해커의 공격 대상이 되기 쉽다.

비밀번호 시도에 여러번 실패하면 다시 시도하기 위해 일정 시간을 두게 한다

비밀번호를 여러번 실패하면 아예 로그인을 할 수 없게 잠긴다거나 은행 같은 경우는 은행에 방문하기 전까지 해제할 수 없도록 되어 있다. 
이렇게 하면 위와 같은 공격을 몇번 시도한 후 다시 시도하기 위해서는 수 초 혹은 수 분을 기다려야 하는데 그렇게 된다면 비밀번호를 알아내는데 천문학적인 시간이 소요된다.

비밀번호를 어렵게 만들게끔 유도한다

brute force 공격은 일반적으로 짧은 암호부터 시작한다. 
그렇기 때문에 비밀번호의 길이가 최소 6자 이상 등의 제한이 걸려 있는 것이다. 
비밀번호가 숫자만 가능하다고 했을 때 1자리 비밀번호라면 한번에 1초씩 시도해 본다 하더라도 최대 10초면 끝난다. 
하지만 비밀번호가 6자리라면 최대 100만초나 걸리기 때문이다.

또 비밀번호에 특수문자 등을 섞어서 복잡하게 만드는 방법은 사전 공격을 어느정도 방어할 수 있다. 
사전 공격은 흔히 사용하는 비밀번호등을 기억할 뿐이지 비밀번호에 자신만이 아는 키워드나 중간에 특수문자와 대문자가 섞여 있다면 아무래도 알아내기 어렵다. 

다만 손쉽게 유추할 수 있는 password!! 같은 식으로 특수문자를 섞어 만드는 것은 아무런 의미가 없다. 
누가봐도 유추하기 쉬운 이런 비밀번호는 크래커의 암호 사전에 이미 등록되어 있을 가능성이 높다.

2중 인증을 한다

현재 사용할 수 있는 최선의 방법중 하나이지만 직접 구현하기가 약간 까다롭긴 하다. 
이 방법은 아이디와 비밀번호를 알고 로그인에 성공했다고 하더라도 추가적인 다른 수단으로 한번 더 인증을 하게 만드는 방법이다.

가장 많이 봤던 것 중 하나가 문자 인증 번호나 이메일을 받는 것 혹은 은행에서 받은 OTP(One Time Password) 일 것이다. 
이러한 추가 인증을 해서 한번 더 성공을 해야 비로소 로그인을 성공시켜 주는 것이다.

이런 방법으로 로그인 인증을 성공하기 위해서는 해당 회원의 계정 뿐만 아니라 실존하는 휴대폰 기기까지 소유하고 있어야 로그인이 가능하다. 
적어도 자신의 가장 가까운 가족이나 친구가 범인이 아니라면 제 3자의 크래커 공격에서는 안전할 수 있다.

이런 비밀번호 인증을 매번 하는것은 까다롭기 때문에 대부분 해당 기기나 위치를 기억해 두었다가 다음번에 같은 자리에서 또 로그인을 하려 한다면 그때는 2중 인증을 하지 않는다.

타 사 로그인 서비스를 이용한다.

흔히 하는 소셜 로그인 서비스가 이런 것이다. 
네이버, 카카오, 구글, 페이스북 등의 기존 계정을 통해 로그인을 하는 방식이다. 
이 방식을 이용하면 사용자는 해당 홈페이지의 비밀번호를 기억할 필요도 없으면서 비교적 안전한 보안 상태를 유지할 수 있다. 
왜 그럴까?

어떤 사용자가 네이버를 가입한 네이버 회원이라고 가정해보자. 
그러면 네이버는 기본적으로 위에서 제시한 보안 방식을 통해 최대한 안전하게끔 미리 구축을 해 놓는다.

그리고 홈페이지 개발자는 네이버 로그인을 통해 네이버에서 로그인을 성공했다는 인증을 전달 받았을 때만 홈페이지의 로그인을 성공시켜준다. 
그렇게 하면 해당 홈페이지의 보안 장치는 네이버가 대신 해주고 있다고 볼 수 있게 되는 것이다.

해당 회사들이라고 해서 보안이 절대적으로 안전하다는 것은 아니지만 이런 방식은 상대적으로 안전하다. 
다만 주의해야 할 것이 있는데 나중에 별도 포스팅으로 다루겠지만 이를 이용한 피싱 방법이 있다.

마치 네이버에 로그인 하라는 식으로 팝업창을 띄우지만 실제 주소가 네이버가 아닌 경우이다. 
이렇게 되면 아이디와 비밀번호를 크래커에게 고스란히 넘기게 되고 크래커의 암호 사전에 비밀번호가 하나 더 추가되는 꼴이 되어 버린다. 
이를 방지하기 위해서는 주소창을 눈여겨 봐야 한다.

주소창에 자물쇠 혹은 주소가 https 로 되어 있는지 잘 확인하자. 
적어도 https 로 된 주소는 조금 더 신뢰할만한 사이트라는 것을 입증해준다. 
더불어서 네이버에 로그인 한다면 주소가 네이버가 맞는지도 함께 확인해야 한다.

※ 출처 - 보안 시리즈 2 - 비밀번호를 왜 복잡하게 설정하라고 할까?

 

보안 시리즈 2 - 비밀번호를 왜 복잡하게 설정하라고 할까?

서론 회원가입을 하다보면 비밀번호를 입력하는 절차는 거의 대부분 서비스의 절차 중 하나이다. 그런데 손...

blog.naver.com

 

 


보안 시리즈 3 - 개인정보가 유출될수록 사기 당할 확률이 높아진다

보이스피싱(사기 전화), 광고 문자, 카카오톡 그 외의 처음 보는 방식으로 접근하는 사기 수법, 
그리고 앞으로도 예상하지 못한 수단으로 사기를 치려는 사람들은 계속해서 나타날 것이다. 
이들은 어떤 방법으로 사기를 칠까?

개인정보의 중요성

민감한 개인정보는 사실 어떤것이든 될 수 있지만 그 중 가장 중요한 것은 어떤 요소가 자기 자신과 연결될 수 있는 것들이라면 민감한 정보라고 볼 수 있다.

예를 들어 이름, 전화번호, 집 주소 등은 매우 민감한 개인정보이다. 
이러한 것들이 유출되면 제 3자가 이 정보를 보고도 특정인을 '추적'할 수 있기 때문이다. 
마땅한 단어가 떠오르지 않아서 '추적'이란 단어를 썼는데, 
이제 이 단어를 주목해서 어떤 방법으로 사기를 치는지 알아보자.

그 전에 개인정보가 어떻게 유출되는지 간략하게 알아봐야 한다.

개인정보가 어떻게 유출되는가

우선 개인정보, 그리고 민감한 정보가 있다. 
이 정보들은 무엇을 말하는 것일까?

개인정보는 말 그대로 내 개인에 관한 정보, 그리고 그 정보 자체가 민감한 정보라고 할 수 있다. 
민감한 정보는 개인 정보가 아닐지라도 내 개인과 특정될 수 있는 정보들 역시 민감한 정보라 할 수 있다. 
그러니 여기에서는 더 넓은 범위인 민감한 정보를 기준으로 설명하려고 한다.

구글 앱 개발을 하다보면 민감한 정보를 앱 개발자가 사용하려 할 때 구글이 이를 어디에 사용하는지 명확히 밝히길 원하며, 
그러한 자료 제출 없이는 앱 승인을 해주지 않는다. 
그러한 정보들은 다음과 같다.

개인 정보와 민감한 사용자 데이터에는 개인 식별 정보, 금융 및 결제 정보, 인증 정보, 연락처 목록, 연락처, 기기 위치, 
SMS와 통화 관련 데이터, 기기에 있는 다른 앱 목록, 마이크, 카메라 등의 민감한 기기 또는 사용 데이터가 포함되지만 이에 국한되지 않습니다.

https://support.google.com/googleplay/android-developer/answer/11987217?hl=ko&ref_topic=9877065

 

개발자 프로그램 정책 - Play Console 고객센터

도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요

support.google.com


이에 국한되지 않는것이 중요하다. 
왜냐하면 지금도 사기꾼들은 참신한 방법으로 개인정보를 빼가려고 할 것이고, 
그럴 때마다 구글은 이 정책을 업데이트 한다. 
그렇다는 소리는 늘 주의깊게 온라인상에 업로드하는 내 정보가 나쁜곳에 쓰일 수 있을지를 생각해야 한다는 뜻이다.

이제 그럼 이 개인정보들이 어떻게 유출되는지 확인해보자.

인터넷을 사용하며 적어둔 모든 정보

이 정보들은 모두 안전할 수 없다. 
큼직큼직한 회사들도 개인정보 유출 사고가 일어난다. 
사이트 회원가입을 할 때, 게임의 신규 출시를 위해 사전 예약을 할 때, 
이벤트 경품 수령을 하기 위해 집 주소를 적을 때 등등. 
이 정보들은 모두 위험한 상태가 된다.

왜냐하면 네트워크에 있는 모든 정보는 사실 안전하지 않다. 
내가 접근할 수 있는 정보는 제 3자도 기술적으론 접근이 가능하다. 
이를 방지하기 위한 많은 법적 수단이 있지만 그것 역시 완전하지 않다.

그리고 한번 유출된 정보는 시간이 지나면 조금 덜해지겠지만 해당 정보들은 여기저기 저렴한 가격에 팔려나간다. 
그러면 여러 사기 집단에게 자신의 개인 정보가 공유되는 것이고, 
1차로 피해를 입은 웹사이트가 해킹 피해를 방지하기 위한 업데이트를 한다고 해도 해당 행위는 소 잃고 외양간을 고친 것과 다름이 없다.

이후에 가입한 가입자들은 상대적으로 안전하겠지만 이미 유출된 정보는 사라지지 않기 때문이다.

그럼 이 방법을 근본적으로 막을 수는 없을까?

안타깝지만 현재로써는 없다. 
인터넷을 사용하지 않고 개인 정보를 적지 않으라고 하면 되겠지만 웹사이트를 이용하면서 그러한 일이 일어나지 않을 수는 없다. 
필요에 따라 개인정보를 공유해야 할 수도 있고, 
택배 배송을 위해 집 주소를 적는 등 이러한 정보들 없이 네트워크를 사용한다는 것은 말이 안 된다.

그렇다면 산 속에서 생활하는 것과 차이가 없다.

 

※ 출처 - 보안 시리즈 3 - 개인정보가 유출될수록 사기 당할 확률이 높아진다

 

보안 시리즈 3 - 개인정보가 유출될수록 사기 당할 확률이 높아진다

서론 보이스피싱(사기 전화), 광고 문자, 카카오톡 그 외의 처음 보는 방식으로 접근하는 사기 수법, 그리...

blog.naver.com

 

 

 

※ 참조 - 모르면 털리는 비밀번호 보안과 해킹

우리는 여러 웹 사이트를 이용하면서 비밀번호를 입력해서 로그인을 합니다.
하지만 이 비밀번호를 어떻게 관리해야 할까요?
비밀번호 뿐 아니라 일반 사람들이 알아둬야 할 기초적인 보안 수칙에 대해 
한번 알아보겠습니다.
보안 수칙을 잘 알아두면 해킹사고 예방에 많은 도움이 됩니다.

블로그 이미지

ebizbank

많은 성원 감사드립니다. OMP 관련 모든 소식은 [카더라~] 뉴스입니다. 궁금하신 문의는 이메일 남겨주세요. myebizbank@gmail.com

,