ETC
Secuinside 2017 ②
2017 07 15
  • Facebook
  • Twitter
  • Copy URL

1부에 이어서 또 다른 흥미로운 강의를 가지고 왔습니다. 못 가신 분들을 위한 강의 정리! 물론 콘퍼런스에서 직접 들은 것 만큼은 못하지만 보여드릴 수 있는 한에서 최대한 담아봤습니다. 

이미지를 불러오는데 실패했습니다.

State-Sponsored Hackers와 해킹기법의 변화 - 김경곤(Anesra)

옛날에는 개인의 의사대로 해커들이 움직였다면, 최근에는 90% 이상의 해커들이 국가의 지원 또는 국가와 관련되어 있다고 생각된다. 특히, 잘하는 해커들일수록 유독 눈에 보인다. 이번 강의에서는 국가와 관련된 해킹사건과 해커에 관해 이야기해보려 한다. 주요 내용은 다섯 개의 국가를 통해 자세히 살펴보고자 한다.

첫 번째로 미국은 강국이기 때문에 사이버 사고나 테러에 대해서도 어느 정도 미리 준비하고 있다. 미국은 NSA를 중심으로 해커, 데이터 분석 전문가 등 다양한 사람들이 모여 일하고 있으며, 전 세계에서도 컴퓨터 관련 엘리트는 다 끌어모으고 있다. 특히, NSA에서 사용하는 툴을 많다. 이 중 XKEYSCORE에 대해 이야기해 보려 한다. XKEYSCORE는 로밍을 통해 전세계 정보를 수집하는 프로그램으로 프리즘(PRISM) 프로젝트의 일환이다. NSA가 자주 사용했던 공격은 Quantum Insert Code Injection 공격으로 공격 대상 사용자가 정상적인 사이트에 접속할 때 패킷을 도청하면서 사용자를 특정 사이트로 접속하도록 유도하는 것이다. 이 공격은 거의 밝혀지기 어려울 만한데, 네덜란드에 있는 Fox-IT라는 회사가 처음 발견하였다. 먼저 브라우저는 웹 페이지 정보를 가져오기 위해 GET 요청을 보내면 웹 페이지는 브라우저의 소스, IP주소 등 다양한 정보를 패킷을 통해 보낸다. 이때, 무작위로 도착하는 패킷을 올바른 정보로 보이기 위해 ACK 번호가 사용된다. 하지만 공격자가 만약, Quantum Insert Code Injection 공격을 보내면 사용자는 같은 시퀀스 번호를 받지만, 내용은 페이로드, 공격코드가 담긴 중복 TCP 패킷을 수신한다. 이런 기술조차 NSA에는 작은 기술이라는 것이다. NSA는 이런 기술뿐만 아니라 더욱 다양한 기술을 연구하고 이미 실제로 사용하고 있다는 것이다. 즉, 우리가 사용하고 있는 기술은 이미 우리 것이 아니라 NSA가 원한다면 그들이 가져갈 수 있다는 것이다. 그것도 합법적으로 말이다. 

다음은 러시아다. 러시아에도 정보 보안을 다루는 두 개의 기관이 있다. 먼저, FSB는 러시아 연방 보안국이며, GRU는 러시아 정보기관이다. 추측하기에는 러시아 국가기관이라고 추측은 되지만 확실하게 러시아가 해킹했었다는 사건은 없었다. 예를 들어, 한 7년 정도 활동하고 있는 APT28 해커 그룹은 주 타겟이 미국방위산업체, 조지아 내무부 등이 있다. 공격은 생각보다 단순하다. 주로 공개되어 있는 웹 사이트나 혹은 내부자를 통한 피싱메일 공격이 주를 이룬다. 하지만 단순한 공격이 아닌 제로데이 익스플로잇을 이용했다는 점에서 주목할만하다. 아무튼, 이러한 사건에서 APT28이 러시아 해커임을 추측하는 이유는 몇 가지 있다. 첫 번째로 러시아의 업무시간과 일치한다는 점이다. 두 번째로 미국이 확실하게 ‘러시아’라고 이야기했다는 점이다. 본래 해킹을 할 때는 걸리지 않기 위해 여러 서버를 거쳐 목적지에 가기도 하고, 흔히 열려있는 포트를 통해 침입하기도 한다. 이 때문에 이러한 해킹 사건에서 침입자의 흔적을 찾기란 쉽지 않지만, 그것을 미국이 해내지 말입니다. 더욱이, 미국은 러시아라고 단정을 짓고 러시아 사람들을 체포해나가는데, 이에 대해 푸틴은 애국심이 강한 해커가 그런 것이라며 나름의 부드러운 반응을 보였다는 점이다. 

세 번째로는 중국이다. Mandiant 회사는 중국의 61398부대를 찾아내며 전 세계적으로 유명해졌다. APT1가 한 기업을 해킹하고 있는 기간이 무려 4년이 넘는다. 그리고 한 회사에서 6.5TB의 정보를 탈취했다. 이들은 주로 툴을 사용하여 해킹했는데, 해킹할 시스템에서 실행하면 메모리에 있는 값을 가져와 패스워드가 곧바로 나오게 된다. APT3 중국 국가 안전부 하청업체로 알려졌으며, APT10 같은 경우는 클라우드에 올라와 있는 시스템을 공격하기도 했다. 이 사건들의 공격자가 중국으로 추측하는 것은 거의 모든 사건의 타겟이 일본이었기 때문이다. 즉, 이러한 사건으로 일본을 치면 가장 이득을 가지는 국가가 중국이었던 것이다.

네 번째로 북한의 해킹 목적은 돈 때문이다. 

마지막으로 이란은 본래 국가 기관의 해커들에게 공식적으로 공격당한 첫 번째 국가다. 하지만 그들은 이러한 사건으로 은밀하게 많은 인원의 보안인력들을 양성했다. 이후, 미국, 일본, 이스라엘, 사우디아라비아 등을 공격했다. 이러한 공격을 한 이가 Shamoon으로 알려졌으며, 특히 시스템을 파괴하는 공격까지 보인다. Shamoon은 Task List 목록 백신 탐지, 정보수집, Additonal Rat Tool, 정보 전송 후 파괴한다. 특히나 이들은 파워쉘(Power Shell)을 사용하는데, 이를 사용하면 악성코드를 쉽게 가져올 수 있다. 

이러한 국가들의 동기가 무엇일까. 미국은 세계 질서를 지키기 위해 라고 적었지만, 사실은 자신들의 강함을 유지하기 위함이라고 보고 있다. 러시아는 미국과 친밀러를 하기 위함인지, 아니면 중국 견제하기 위함인지 정확히 추측되지는 않는다. 중국은 새로운 세계 질서를 유지하고, 북한은 먹고 살기 위해 해킹을 하고 있다고 보고 있다. 이란은 북한과 동맹 맺고 있다. 

특히나, 발표자는 아직 밝혀지지 않은 쉐도우 브로커스에 대해 더 이야기했다. 쉐도우 브로커스는 해커 그룹으로 어디 국가이고, 누구인지 아직 아무도 모른다. 단순히, 쉐도우 브로커스에 관한 추측으로는 2~3개 정도가 있는데 첫 번째로 NSA의 내부 직원이라는 이야기다. 다른 의견으로 에드워드 스노든이 러시아라고 얘기하기도 했었다. 이에 대해 발표자는 이전에 있었던 사건들을 바탕으로 자기 생각을 담아 그들이 누구인지에 대해 의견을 이야기해 보는 시간이었다.  

 

Universal XSS - 신정훈(singi)

UXSS(Universal Cross-site Scripting)는 간단히 말해 서버 페이지가 취약하여 자바 스크립트를 실행시킬 수 있는 취약점이다. 즉, 서버 쪽에 취약점이 없더라도 트리거를 할 수 있는 취약점으로 브라우저 코드가 잘못되어 발생할 수 있는 버그다. UXSS의 가장 메인은 SOP의 방어기능을 우회하는 것이 핵심이다. SOP는 서로 다른 도메인들에서 자바스크립트를 실행하지 못하게 하는 것이다. UXSS는 구현상의 오류를 찾는 것인데 조금 더 찾기가 어려울 뿐만 아니라 익스플로잇을 작성할 때 힙이나 그런 것을 생각할 필요가 없고 만들기도 어렵다. 그래서인지, UXSS를 찾는 사람은 전 세계에 1명이 있다. 거의 2억 정도 번 듯하다. 이 공격을 통해 다른 도메인의 데이터나 쿠키를 훔쳐오고 다른 도메인의 페이지를 바꿔버려 피싱사이트를 만들 수도 있다.

발표자는 먼저 좋은 버그가 무엇인지 검색하며 확인했다. 그가 공부한 방법을 그대로 따라가 보며 버그가 일어난 이유와 그것을 익스플로잇하는 것을 확인해보자. 이어서 그는 그가 공부한 4가지의 버그를 발표했다. 먼저 로키가 제보한 CVE-2017-2364를 살펴보자. 한 함수가 document 상태가 페이지 캐시가 아닐 때만 호출이 된다. 이때, 이 함수를 호출하지 않도록 도큐먼트 페이지 형태를 바꿔 버린 것이다. 이후 자바스크립트를 할당해서 다른 사이트로 연결한다. 

두 번째, CVE-2017-2442를 살펴보자. 사파리에는 오브젝트라는 것이 있다. 콜백에서 글로버 오브젝트 인자를 가져오는데 이것이 문제가 된다. 현재 프레임의 자바스크립트를 가져오게 되면 현재 프레임의 SOP가 따라오게 된다. 즉, 글로버 오브젝트는 이렇게 가져올 것이 아니라 메인에 있는 오브젝트를 가져왔었어야 했다. 지금은 사파리, 파이어 폭스에서 멸종되었다.

세 번째로 앞서 얘기한 버그와 비슷하다. 앞서 얘기와 마찬가지로 인자에서 또 오브젝트를 가져온다. 이 버그의 패치는 함수의 인자로 묶어서 패치가 되었다. 아이 프레임을 만들고 그 안에 에러를 만드는 공격 코드를 넣고, 그것을 창에 보여서 확인하도록 했다.

마지막으로 CVE-2017-2363을 살펴보자. 이 취약점은 alloc event를 호출하는 케이스로 셋도큐먼트에 널포인트를 넣어보자. 문제는 프레임을 사라지기 전에 내부적으로 alloc 이벤트를 호출시킨다. 즉, 프레임이 사라지기 전에 이벤트를 호출하여 새로운 이벤트를 가지고 자바스크립트 코드를 인젝션 시키면 UXSS 버그가 만들어진다.

발표자에 따르면 이런 식으로 4~5개를 보니 어느 정도 패턴을 안 것 같다고 얘기했다. 이어서 이를 통해 다음과 같은 세 개의 상황으로 추려 버그를 찾기로 하였다. 먼저 첫 번째로 alloc 이벤트의 핸들러를 보고, 두 번째로 도큐먼트에서 프레임을 지울 때, 프레임을 깃하지 않는 사례를 찾아보는 거였다. 마지막으로 콜백이나 어떤 상태에서 함수 인자가 아니라 코드 내부에서 확인하는 경우를 찾아보는 것이었다. 예를 들어, 도큐먼트에 널 포인터를 집어넣으면 프레임 이벤트 핸들러에서 alloc 이벤트를 자체적으로 해준다. 즉, 프레임이 사라지기 전에 alloc 이벤트를 실행하면 그 alloc 이벤트의 새로운 자바스크립트 코드를 인젝션 하여 UXSS 버그를 찾아내는 것이었다.

발표자는 이러한 상황을 찾아 공격하려고 하였다. 먼저 HTML 모드가 시작되면 프레임 워크는 도큐먼트를 만들기 시작한다. 그런 다음에 도큐먼트 로더는 대기상태로 빠져드는데 만약 사용자가 특정 웹 페이지로 가게 되면 프로비전 상태로 만든다. 그리고 프로비전 상태가 다 끝나면 커밋된 상태로 바꿔버린다. 그렇게 HTML 코드가 다 완성이 되면 옆에서는 이미지나 자바스크립트, 폰트 등을 가져온다. 이렇게 되면 도큐먼트가 커밋된 상태로 불러오게 되고 이때부터 사용자한테 페이지를 보여준다.

발표자는 여기서 자신이 발견한 3개의 버그를 발표했다. 먼저, Location이 NULL로 찍히는 버그와 애플리케이션에서 어떤 태그를 처리 안 하여 나오는 Use After Free 버그를 발견하였다고 전했다. 마지막으로 스크립트를 통해 프로비전 상태를 커밋 상태로 바꿀 때 프로비전에 있는 모든 하이 프레임들을 다 떼어 내버리는 버그를 발견하였다고 전했다. 자세한 사항은 곧 공개되는 발표자의 PPT를 통해 코드를 확인하면 좋을 것 같다. 발표자는 이 시간을 비롯하여 UXSS를 소개하고. 자신이 찾은 버그에 관해 이야기하는 시간이었다.

 

Wireless Router Default Password Pattern Analyze - 이승현(silnex)

 

와이파이는 우리 일상생활에서 정말로 많이 쓰인다. 와이파이가 없으면 숨도 안 쉬어 진달까. 아무튼, 이런 공유된 와이파이는 취약하다. 예를 들어, ARP 스푸핑이나 중간자 공격, 스니핑에 굉장히 취약하다. 반대로 가정용 와이파이는 안전하다고 생각하는 경향이 있는데, 생각보다 그렇지 않다. 특히나, 와이파이 비밀번호에 3개월마다 특수문자, 숫자, 영어 대소문자 등을 섞어 비밀번호를 바꾸기에는 얼마나 귀찮은 일인가. 아무튼, 개인 가정용 와이파이도 그렇다지만 통신사들의 공유기도 문제다. 예를 들어 통신사들의 공유기에는 기본적으로 걸려있는 와이파이 비밀번호가 있는데 이 비밀번호 역시 취약하다는 이야기다. 더군다나 비밀번호를 바꾸는 사람의 범위도 60%에 해당한다.

특히, 기본적인 비밀번호는 분명 말하지도 않고 공식적으로 발표한 것도 아니므로 안전하다고 생각하는 경향이 있다. 아주 잘못된 생각이다. 이러한 비밀번호에는 기본적으로 패턴이라는 것이 존재하는데, 패턴이 존재하는 비밀번호는 짧은 시간 내에 크랙이 가능하다.

통신사 공유기 외에도 기본적으로 비밀번호가 걸려 있는데 그 중 IP 공유기는 다른 공유기와 달리 비밀번호가 걸려 있지 않아 더욱 사고가 잦은 것 같다. 그리고 사건, 사고의 2순위는 역시 통신사들의 공유기였다.

시작하기 앞서 공유기의 암호에 대해 살펴보면, 가장 많이 사용하고 있는 것은 WEP, AES, PSK 방식이 있다. WPA2는 인증키 분배 알고리즘을 사용하는 암호화로 WEA, WPA, WPA2 이렇게 세 가지의 방식으로 나뉜다. 이어서 PSK는 인증 방식에 대한 것을 나타낸다. PSK는 우리에게 익숙한 비밀번호를 입력하여 접속하는 방식을 뜻한다. 이 외에도 확장프로토콜 ESP를 사용하여 인증에 보안옵션을 더 추가할 수도 있다. 마지막으로 AES는 암호화 알고리즘으로 무선 네트워크일 때 송수신되는 데이터를 암호화하는 알고리즘에 대한 것이다.

또한, SSID, MAC Address Filtering, Static Addressing 라는 것이 존재하는데 패킷을 통해 오는 일부분의 정보를 필터링하여 사용 여부를 제한하는 방법이다. 이는 완전한 인증방식이라기보다는 여러 보안 옵션 중 한 방법이다. 따라서 앞서 얘기한 WPA2와 함께 사용하면 좋다.

기본적으로 와이파이를 사용하려면 비밀번호가 걸려 있기 때문에 비밀번호부터 알아야 한다. 먼저 옛날에는 WEP를 많이 사용했는데 스트림 암호화가 초깃값이 중복이 되면 킷값을 복호화할 수 있었다. 공유기가 보급되기 시작하고 나서부터 WPA가 되었다. 기본적으로 비밀번호는 고정되어 있다. 그리고 그 보다 조금 더 발전된 형태, WPA2의 비밀번호를 찾기 위해서 사전 공격이 필요하다.

사전 공격이란 부르트 포스의 대상을 줄여놓은 형태로 이러한 패스워드를 찾는데 많이 사용된다. 하지만 여기서 부르트 포스 공격을 사용하기에는 시간이 너무 오래 걸릴뿐더러 다 돌린다고 하더라도 찾을 수 있을지 확실하지 않다는 것이다. 또한, 인터넷 검색으로도 알 수 없는 WPA2는 어떻게 알 수 있을까. 가장 먼저 알아야 할 것은 SSID로 어떤 통신사의 공유기를 사용하는지 알아내야 한다. 두 번째로 무선 라우터의 비밀번호 규칙, 패턴이라는 것이다.

이어서 발표자는 K사, L사, S사의 비밀번호 패턴에 대해 자세히 설명하였다. 딱 봤을 때 각각의 회사가 비밀번호를 붙이는 패턴은 크게 다르지 않으며 이러한 규칙에 맞춰 사전 공격을 하더라도 시간은 훨씬 더 줄일 수 있을 것이다. 더불어, 포켓도 패턴이 존재한다. 공유기 보다는 좀 더 오래 걸리고 찾기 어려울 가능성이 더 크지만 못 찾을 정도는 아니다. 이 외에도 새로 나오는 모델들 역시 피차일반이다. 비밀번호 크랙을 조금이나마 방어하기 위한 방법은 간단하다. 비밀번호와 SSID를 바꾸는 것이다. 앞서 얘기한 60%에는 SSID를 안 바꾼 사람들의 수도 포함되어 있어 실제로 우리가 이러한 공격을 했을 때 반 이상은 공격이 들어갈 것이라는 이야기다.

 

실제 생활에서의 무선 네트워크 해킹 - 이경문(gilgil)

콘퍼런스장에서 무선 패킷을 잡아서 이더넷 프레임으로 바꿔주는 프로그램을 통해 해킹하는 시연을 선보였다. 이더넷 프레임에서 중요한 정보가 있으면 쿠키를 빼내서 똑같이 웹 브라우저로 보여줄 수 있는 프로그램이었다. 몇 명이 AP에 연결하여 네이버, 네이트에 들어가 웹툰이나 뉴스를 보도록 하였다. 페이스북이나 트위터는 안되었다. 연결된 네트워크는 WPA2로 암호화되어 있었는데 암호를 걸어 놓은 것이 무색하다. 어떻게 했을까. 네이버 세션을 통신할 때에는 쿠키가 있는데 이를 네이버에 계속 보내어 그 사람이 계속 접속해있는 것처럼 보이게 만드는 것이다. 이 부분은 사용자가 로그아웃하지 않는 이상 계속 남아 있으며, 제 3자가 볼 수도 있다.

요즘은 무선 네트워크가 열려 있거나 혹은 WPA2로 암호화되어 있다. 더욱이, 여러 곳에서 무선 네트워크를 제공하고 있어 사실 데이터를 쓰기에는 상당히 좋은 환경이다. 하지만 보안을 하는 입장으로 공공 무선 네트워크는 우려스러운 부분이 있다. 물론, 공공 네트워크에 암호를 걸어놓는 이들도 많이 보이지만 그렇다고 해도 여전히 걱정스러운 것은 사실이다. 발표자는 앞서 시연을 통해 암호화가 걸린 공공 네트워크라고 해도 제 3자가 볼 수 있다는 것을 말해주고 싶었던 것 같다.

그러면 어떻게 이를 막을 수 있을까. 첫 번째, 무선 네트워크를 사용하지 않는다. 하지만 말도 안 되는 이야기고 발표자도 인정했다. 두 번째, WPA2 엔터프라이즈 환경을 사용한다. WPA2 엔터프라이즈 환경은 사용자의 인증영역까지 보완한 방식으로 WPA2까지는 많이 사용하지만, 엔터프라이즈 환경은 많이 사용하지 않는다고 한다. 하지만 이도 한계가 있다. 예를 들어, 학교나 다른 한정적인 공간은 각자 ID를 부여하여서 할 수 있는 얘기지만 스타벅스 같은 공공시설 같은 경우는 불가하다. 세 번째로 그나마 가능성이 있는 방안은 암호화된 트래픽을 제공하는 애플리케이션을 이용하는 것이다. 예를 들어, 앞서 시연에서 보인 페이스북이나 트위터와 네이버의 다른 점이 여기서 나타난다. 페이스북이나 구글, 트위터는 예전부터 모든 트래픽을 암호화를 하여 사용하였다. 이 때문에 만약 위와 같은 사이트를 접속했다면 통신에 오가는 쿠키, 세션 정보들을 볼 수 없었을 것이란 이야기다. 반면 네이버 같은 경우는 부분적으로 트래픽만을 보호하기 때문에 문제가 된다는 것이다. 예를 들어, 뉴스, 웹툰을 볼 때 불필요하게 섞여 있는 우리의 정보가 넘어가지 않도록 구현되어야 한다는 점이다. 이에 대해 가장 추천하는 해결점은 SSL이다. 아무튼, 결론은 Full Traffic을 제공하자는 것이 궁극적인 방안이라고 말할 수 있다.

그렇다면 왜 이렇게 무선 해킹에 대해 중요성을 인지하지 못하는 것일까. 그에 대한 발표자의 생각은 무선 환경을 접할 기회가 적다는 것이다. 일단, 무선 네트워크 환경을 접하기 위해서는 무선 랜 카드를 사야 한다. 추천해주는 것은 ‘TL-WN722n’ 제품이며 운영체제는 Kali나 우분투를 추천한다. 이렇게 준비하여 하나씩 알아가야 한다고 생각한다. 한가지, 절대로 법에 어긋나는 행위를 해서는 안 된다. 또한, 요즘에는 기기도 잘 나와 있어 스마트 폰이나 탭에 Kali를 올려 버튼 몇 번 누르는 것만으로도 해킹된다. 예를 들어. IoT에서는 라즈베리파이를 사용할 수 있고 스마트폰에서는 kali nethunter 모두 리눅스를 지원한다.

문제는 법이다. 법은 얘기하는 사람마다 다 다르다. 더욱이, 얘기하는 사람마다 다 틀리는 법 때문에 IT 발전이 더욱 더딘 것 같다. 예를 들어 nmap도 많이 쓰이는 도구로 국내에서도 분명 만들 수 있다. 하지만 만들면 옆에서 클레임을 걸기 때문에 만들지 못하는 것이다. 법을 지키지 말라고 하는 것이 아니다. 단지 법이 가지고 있는 한계 때문에 기술이 제한되는 것을 너무 많이 봐왔기 때문에 안타깝다.

발표자는 이어서 외국의 여러 사례를 얘기했다. HACKRF, WIFI Pineapple, tactical Network Injector, shodan.io 등등 외국에서는 정말 많은 해킹 도구가 잘 만들어지고 있으면서, 기술의 발전이 나아가고 있는데 국내는 그렇지 못하여 더욱 아쉬워했다. 더불어 무선 네트워크 해킹이 심각하다는 점을 알아주길 바란다며 분명 우리도 잘 만들 수 있다고 말했다.  

 

 

Secuinside 2017 ①

=> Secuinside 2017 ②

Secuinside 2017 ③

유성경 yuopboy@grayhash.com