GaGe

2018 겨울 고숙한 주제 연구 본문

SISS (2017-2018)/고숙한

2018 겨울 고숙한 주제 연구

Sorrel 2018. 1. 31. 18:14

고숙한 주제 파악

 

세미나 발표를 듣고 적는 것이 아니기 때문에 발표자가 '무엇에 대해 말하고자 하는지'를 파악하기 위한 공부 쯤으로 간주한다.

 

 

 

<malware detection using machine learning>

 

'머신 러닝을 이용한 멀웨어 탐지'

 

malware : 악성 소프트웨어(malicious software)의 줄임말로, 그냥 평소에 우리가 알고 있는 컴퓨터 바이러스, 트로이목마 등의 악성 프로그램들을 말한다.

machine learning : 인공지능의 한 분야로, 경험적 데이터를 기반으로 학습을 하고 예측을 수행하고 스스로의 성능을 향상시키는 시스템과 이를 위한 알고리즘을 연구하고 구축하는 기술이다.

 

 요즘에 머신러닝이 굉장히 붐하게 떠오르고 연구되고 있는데 무지인인 나에게도 알고 있는 머신러닝은 구글에서 연구 중인 'QUICK, DRAW!' 게임이다. 사용자는 20초 안에 단어에 맞는 그림을 빠르게 그려내면 인공지능이 그 그림을 보고 맞추는 게임이다. 생각해보자. 만약에 '시계'라는 단어가 주어진다면 네모난 시계를 그리는 사람도 있을테고 동그란 시계를 그리는 사람도 있을 것이다. 퀵 드로우는 이런 다양한 시계들의 정보를 모은다. 이것이 바로 머신 러닝의 '학습' 부분이 되는 것이다. 이렇게 인공지능이 '경험'이 늘어난다면 (인공지능 입장에서는 학습된 데이터 쯤으로 간주된다.) 새로운 일이 벌어졌을 때 과거 사건 중 가장 유사한 사건을 분별하여 그 과거 사건을 기반으로 해당 인공지능이 어떤 일을 해야 되는지를 '판단'하게 된다.

 

 

<phishing website detection using Datamining & Machine Learning>

 

'데이터마이닝과 머신 러닝을 이용한 피싱 웹사이트 탐지'

 

datamining : data+mining (data=데이터, mining=채굴) 수많은 데이터들 사이에 숨겨져있는 상관관계를 발견할 뿐만 아니라 미래에 사용 가능한 정보를 채굴하며, 그를 판단 혹은 의사 결정에 이용하는 것을 말한다.

phishing : 금융기관 등으로부터 개인정보를 불법적으로 알아내서 이를 이용하는 사기수법을 말한다.

 

데이터 마이닝은 과거에는 알지 못했지만 머신러닝으로부터 축적되는 데이터와 경험들을 갖고 새로운 데이터를 이끌어내는 것 쯤으로 생각하면 될 것 같다. 피싱 웹사이트는 내가 생각하기로 그냥 사용자들을 '낚는다'라는 표현이 이해하기 쉬울 것 같다. 불법적으로 알아내는 방법은 맞긴 하지만 수법이 조금 유치하다. 나도 피싱 수법에 골치 아팠던 적이 있었다. 본가에 있는 데스크톱이 관리를 할 줄 아는 사람이 없어서 정말로 답 없는 바이러스 덩어리 데스크톱이 되었는데 피싱수법의 대상이 됐던 적도 있었다. 인터넷 익스플로러에 들어가면 은행 기관 목록이 쭉 뜨고 해킹당했다는 문구와 함께 아이디 비번을 쳐서 해킹을 막으라는(?) 의도였던 것 같은데 이 창이 뜨면 그 창에서 아이디 비번을 입력하기 전까지는 창이 안 꺼지고 인터넷 사용도 불가해서 굉장히 불편했었다. 조금만 생각해보면 그 어떤 은행기관이 타 은행과 함께 같이 연합하여 창을 뜨게 만들겠는가? (독자적인 창도 아니고) 아니 애초에 그런 창의 띄울 수 있는 권한도 은행에는 없을 것이다. 이 사례 말고도 트위터와 홈페이지를 똑같이 만들어서 진짜 트위터 로그인창처럼 띄운 다음에 의심 없이 아이디 비밀번호를 치게 만드는 피싱 방법도 있었는데 이는 도메인을 신경써서 보지 않는 이상은 나도 당할 것 같은 피싱 방법이었다. 이렇게 치밀한 수법도 있지만 어이없을 만큼 허접한 피싱 수법도 당하는 사람이 있으니까 있는 거라는 생각이 미치자 컴퓨터 교육이 중요하다는 생각을 더욱 확고히 하게 된다. 이러한 피싱 수법을 데이터마이닝으로 관련 지어서 막는 방법을 발표할 것이라 예상하는데 내용이 궁금했다. 기존에 있는 논문과는 다른 방법이 나올 수도 있지 않을까 싶었다.

 

 

<와이파이 하이재킹을 이용한 암호화폐 채굴>

 

hijacking : 운항 중인 항공기를 불법으로 납치하는 행위

암호화폐 : 암호를 사용하여 새로운 코인을 생성하거나 거래를 안전하게 진행할 수 있도록 매개하는 화폐를 말한다. 다른 말로 가상화폐라고 불리기도 한다.

 

단어의 의미를 명확하게 찾아서 알게 되니 하이재킹이라는 단어가 참 매력적으로 다가왔다. 데이터들의 전송을 하늘을 나는 비행기로 묘사한 점, 그 데이터를 중간에 빼돌리는 것을 하늘을 나는 비행기를 납치하는 것으로 묘사한 점이 마음에 들었다. 이런 와이파이의 하이재킹을 이용해서 암호화폐를 채굴하는 방법이 어떤 것인지 궁금하다. 또한 암호화폐, 가상화폐, 디지털화폐가 각각 다른 것으로 의미되는 것도 새로 알게된 점이다. 가상화폐는 디지털 화폐의 일종이고, 가상화폐&디지털화폐는 (아 갑자기 화폐란 단어가 게슈탈트 붕괴왔다) 암호화폐와 유사한 개념이지만 동일한 개념은 아니라는 점에 대해 신기함을 느꼈다. 하지만 또 대한민국 정부는 암호화폐를 가상통화라고 부른다. 가상화폐란 정부에 의해 통제받지 않는 디지털 화폐의 일종인데 여기서 특이한 점은 '정부가 발행하지 않고 개발자가 발행 및 관리하는 특정한 가상 커뮤니티에서만 통용되는 결제 수단'이다. 하지만 그중에 암호화폐는 개발자가 발행하지는 않는다. 때문에 발행하는 주체를 생각해보면 대다수의 암호화폐는 가상화폐가 아니라 한다. 가장 유명한 디지털 화폐인 비트코인은 디지털 화폐이기는 하나 가상화폐는 아니다. (솔직히 여기서부터 멘붕 왔다) 그림으로 그려봤다. 본인의 생각이므로 틀렸다면 고쳐서 알려주길 바란다.

 

 

 

 

<MS OFFICE WORD의 DDE기능 악용>

 

DDE기능 : Dynamic Data Exchange 의 약자로, 윈도우 응용 프로그램 간의 같은 데이터를 공유하도록 허용하는 방법이다. 이 기능은 MS excel, word, visual basic 등의 프로그램에서 사용된다.

 

이 기능의 악용은 2017년 11월부터 시작된다. 또한 가상화폐가 인기를 끌면서 전 세계의 해커들이 한국을 타겟으로 하는 해킹을 눈여겨보고 있다는 점을 주목하고 싶다. 그러므로 한국은 소프트웨어의 보안을 더욱 신경써야 할 것이다. 사용자가 MS OFFICE의 DDE 기능을 사용하면 위장한 악성 워드문서(파워쉘 스크립트)가 실행된다. 이 공격의 특징은 피해자를 원격으로 조작할 수 있다는 점이다. 해커는 피해자의 화면을 스크린샷으로 찍어서 원격 서버로 보낼 수 있고 여러 조직들을 공격한다.

 

 

<멜트다운(Meltdown)과 스펙터(Specture)>

--> 하드웨어 기반의 공격 취약성 

 

Metldown : (공식 문서 설명을 그대로 해석해보겠다) 멜트다운은 어플리케이션 유저와 운영체제 사이의 가장 기본적인 고립을 부순다. 이 공격은 다른 프로그램과 운영체제의 메모리(비밀 메모리도)를 접근하는 프로그램을 허용한다. 만약 사용자의 컴퓨터가 취약한 프로세서나 패치되지 않은 운영체제를 사용할 때 중요한 메모리를 이용하여 작업을 할 때 안전하지 않을 것이다. 그것은 클라우드 기반이나 개인적인 컴퓨터 둘 다 해당이 된다.

 

Specture : 스펙터는 각기 다른 어플리케이션 사이의 고립을 부순다. 이것은 공격자가 그들의 기밀정보를 뺏기 위해 error-free 프로그램을 속이는 것을 가능하게 한다. 안전에 대한 체크는 표면적인 공격을 증가시키고 아마도 어플리케이션들을 민감하게 만든다. 스펙터는 멜트다운보다 찾기 어려우며 완화시키는 것도 어렵다. 하지만 소프트웨어 패치로 인해 발견된 스펙터를 예방하는 것은 가능하다.

 

  많은 양은 아니지만 1년을 해킹을 공부해오면서 소프트웨어가 아닌 하드웨어 공격은 거의 처음으로 공부하는 것 같다. 소프트웨어가 아닌 하드웨어 공격은 어떻게 다른지에 대해 궁금하기도 했다. 찾아보니까 이 공격들은 클라우드 서비스의 공급자가 아니라면 즉각적인 위험에 노출될 가능성은 매우 낮다고 한다. 또한 원격으로 행하는 공격이 아니기 때문에 그저 정보를 읽을 수 밖에 없다고 한다. 실질적으로 행하는 공격은 아니지만 여전히 위험한 존재다. 이러한 공격들의 가장 이상적인 대처방법은 하드웨어를 교체하는 것이라고 한다. 하지만 모든 장치를 교체할 수는 없는 노릇이기 때문에 CPU의 마이크로 코드 업데이트와 운영체제 업데이트를 통해 문제를 완화시키는 조치를 실제로 행하고 있다고 한다. (기술이 진짜 발전했구나 하드웨어 문제를 소프트웨어적으로 해결하려고 노력하다니) 멜트다운을 완화하는 방법은 사용자 공간 프로그램을 OS 커널(컴퓨터 운영체계의 가장 중요한 핵심으로써 운영체계의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공한다. 또한 커널은 메모리나 저장장치 내에서 운영체계의 주소공간을 관리하고, 이들을 모든 주변장치들과 커널의 서비스들을 사용하는 다른 사용자들에게 고루 나누어주는 메모리관리자를 가지고 있다. 커널의 서비스는 운영체계의 다른 부분이나, 흔히 시스템 호출이라고 알려진 일련의 프로그램 인터페이스들을 통해 요청된다. [네이버 지식백과] 커널 [kernel] (NEW 경제용어사전, 2006. 4. 7., 미래와경영))과 분리시키는 작업이다. 따라서 실행 시 더 많은 자원이 소모될 수 있다. 멜트다운과 스펙터가 목표로 삼는 CPU의 대부분의 제조업체는 인텔이기 때문에 인텔로써는 매우 힘들 것이라 생각한다.

 

 

http://www.coolenjoy.net/bbs/38/1432901

 

 

<백도어 해킹과 악성코드>

 

백도어 : 해커가 해킹을 성공한 이후에 다음에도 쉽게 해킹할 수 있도록 만들어 놓은 일종의 개구멍이다. 따라서 최초 해킹은 백도어가 아닌 다른 방법으로 사용되며 백도어는 이후에 쉽게 드나들 수 있게 만든 것이다. 백도어의 특징으로는 자기 복제가 가능하며 실행 프로그램으로 등록되고 멜트다운과 스펙터와는 달리 시스템을 변조하고 파괴까지 가능하다. (ex, 트로이목마) 백도어는 크래커에 의해 재침투의 목적으로도 쓰이지만 관리자 혹은 개발자가 작업을 더 효율적이고 쉽게 하기 위해 만들어 놓기도 한다. 백도어의 종류로는 [로컬 백도어, 원격 백도어, 시스템 설정 변경, 트로이목마형, 원격GUI 백도어, 패스워드 크래킹 백도어]가 있다.

 

백도어에 대한 설명을 쭉 읽다보니 FTZ 때 공부했던 내용들이 떠올랐다. 백도어는 최초 공격으로 루트 권한을 획득한 후 이후에 다시 재 접근을 위해서 설치하는 프로그램인데 루트 권한 자체가 setuid 이므로 FTZ를 풀 때 했던 공부들이 여기서 말하는 최초공격인 것 같다. buffer overflow 공격으로 루트 권한을 획득하는 것이 가장 빈번하다.

 

 백도어 소스로는

#include <stdio.h>

main(){

setuid(0);

setgid(0);

system("/bin/bash");

}

이것으로 /bin/bash를 특정한 추가적 행동 없이 바로 얻을 수 있는 소스코드인 것으로 예상된다.

 

 백도어를 만드는 방법으로는 vi backdoor.c 로 위 백도어 소스코드를 작성한 다음 tmp 디렉토리에 백도어를 컴파일 하고 백도어 실행 파일 setuid를 설정한 다음 일반계정으로 백도어를 실행하는 순서라고 한다.

 

 

 

https://blog.naver.com/henry_23/20144744000

 

 

 

<error based SQL injection tool>

 

SQL : 데이터베이스를 사용할 때, 데이터 베이스에 접근할 수 있는 데이터 베이스 하부 언어

SQL 주입 공격 : 웹 클라이언트의 반환 메시지를 이용해서 불법 인증 및 정보를 유출하는 공격이라고 한다. 웹 응용프로그램에 강제로 구조화 조회 언어 구문을 삽입해서 내부 데이터베이스 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회할 수도 있다. 이 공격은 MS SQL 서버 뿐만 아니라 모든 관계형 데이터베이스 관리 시스템에서 가능하다고 한다.

 

SQL 인젝션 공격은 가장 빈번하게 일어나는 웹해킹 공격이라고 한다. 내가 유튜브를 자주 보는데 나오는 동영상 광고 중에 "여기어때"가 자주 나오는데 2017년 3월에 그 숙박 서비를 어플을 이용한 고객에게 불쾌한 내용을 담은 문자메시지가 발송된 것으로 발견 됐다. 4천명의 피해 규모를 보면 빈번하긴 하지만 가볍게 볼 것은 아닌 것 같다. 3월 30일에는 "여기어때"에서 91만명의 고객 정보가 유출도 됐었다. 유출 가능성으로 SQL가 제시되었지만 확실한 것으로는 아니라고 한다.

 

공격법

 

 

SQL인젝션은 웹사이트 취약점을 찾아서 데이터베이스를 관리하는 SQL 명령어에 악성코드를 삽입하는 방법이다. 그래서 해커가 조작을 할 수 있게 되고 비정상적으로 실행하게 한다.

 

 

SQL 공격은 크게 에러 기반 공격과 블라인드 공격으로 나뉜다고 한다. 에러 기반 공격은 해커가 검사하지 않은 입력값을 발견하면 이를 악용하는 방법이다. 덫을 깔아놓고 피드백이 입력되면 그 때 정보를 가져가는 방법이다. 블라인드 공격은 그와는 달리 DB 서버 에러 메시지를 이용하지 않고 바로 DB를 공격한다.

 

이를 막는 방법은 웹 방화벽이 있다.

 

 

http://terms.naver.com/entry.nhn?docId=3581278&cid=59088&categoryId=59096

 

 

<Secure Coding>

 

secure coding : 개발하는 소프트웨어가 복잡해짐으로 인해 보안 상 취약점이 발생할 수 있는 부분을 보완해서 프로그래밍하는 것이다. 시큐어 코딩에는 코딩 규칙과 소스코드 취약 목록이 포함된다고 한다. 미국과 한국은 시큐어 코딩을 의무화 하기도 했다.

 

 

C 언어와 JAVA 보안 유형과 설명이다. (출처 : 행정안전부 시큐어 코딩 가이드)

 

 

행정안전부 시큐어 코딩 가이드 전문 다운로드(pdf 파일)

https://www.securitya.kr/eduwiz/bb/bbs/board.php?bo_table=c403&wr_id=12

 

 

참고

http://terms.naver.com/entry.nhn?docId=3436226&cid=42346&categoryId=42346

Comments