5. 시스템 해킹 (System hacking)



 안녕하세요. 벌써 한 주가 다 지나가 버리고 새로이 월요일이 왔네요. 끔찍합니다. 정말로요. 어찌되었든 오늘은 오랜만에 '시스템 해킹'을 주제로 해킹 관련 포스팅을 할까 합니다. 





 '시스템 해킹'의 정의에 대해 알아보도록 하겠습니다. 사실 시스템 해킹에 대한 정확한 정의는 나와있지 않습니다. 그렇기에 제가 생각하는 시스템 해킹의 정의를 말씀드리도록 하겠습니다. '시스템해킹'이란 '시스템의 취약점을 이용한 공격을 통해 루트 권한을 획득한 후 악성코드(malware)나 백도어(backdoor)를 설치 및 실행하도록 하는 것'이라고 생각합니다. 물론 무조건 공격자가 해당 시스템에 악성코드나 백도어를 설치해 놓는 것은 아닙니다. 공격자에 따라 루트 권한 획득 후 하는 행동이 다르겠죠. 그럼에도 저렇게 적어놓은 이유는 많은 사례들을 살펴보면 악성코드나 백도어를 설치해 놓기 때문입니다. 



 <시스템 해킹의 정의>

   -시스템의 취약점을 이용한 공격을 통해 루트 권한을 획득한 후 악성코드(malware)나 백도어(backdoor)를 설치 및 실행하도록 하는 것

   

  


 시스템 해킹 기법의 종류로는 여러가지가 있는데요, 대표적인 것들을 뽑자면 'stack buffer overflow', 'race condition', 'RTL', 'ROP', 'command injection', 'heap buffer overflow'등이 있습니다. (오늘 이 기법들 하나 하나를 다 다루어 볼려고 했으나, 한 포스팅에서 진행하기에는 너무 양이 많아서 앞으로 각각의 공격들을 하나씩 다룰 예정입니다.)




 그럼 오늘은 시스템 해킹의 정의로 포스팅을 마무리 짓겠습니다. 아무래도 시스템 해킹 공격 기법의 종류에 대해 언급을 하지 않으니 포스팅이 초라하네요. 그래서 이번주에는 시스템 해킹 기법 중 2가지를 추가로 더 포스팅하도록 하겠습니다. 읽어주셔서 감사합니다. (다른 의견이나, 틀린 부분 있으면 comment 남겨주세요) 

 

'정보보안' 카테고리의 다른 글

4. Worm  (2) 2018.01.11
3.메모리 보호기법  (2) 2018.01.05
Anti Reversing  (0) 2017.12.27
Ransomware  (0) 2017.12.18

4. Worm



안녕하세요. 이번주는 Worm에 대해 포스팅을 하겠습니다. 



 첫 번째로 Worm의 정의에 대해 설명해드리겠습니다. 저번주에는 Ransomware 관련 포스팅을 했었는데요, Worm 또한 Ransomware와 마찬가지로 악성프로그램(malware)의 일종입니다.  Worm은 스스로를 복제해서 네트워크를 이용해 확산시키는 악성프로그램으로, 바이러스와 달리 다른 파일을 감염시켜 실행되지 않고 독자적으로 실행되어 스스로를 복제합니다. 그리고 'Worm'이라는 이름의 유래는 John Brunner가 1975년에 출판한 공상 과학 소설 《The Shockwave Rider》에서 유래되었다고 하네요.

<Worm의 정의>

  -다른 파일을 감염시키지 않고 독자적으로 실행되어 스스로를 복제한 후 네트워크를 통해 확산시키는 악성프로그램





 두 번째로는 Worm의 종류에 대해 살펴보겠습니다. 웜의 종류로는 Morris Worm, code red Worm, SQL Slammer, Blaster Worm, Welchia Worm, sobig.F Worm,Mydoom Worm, Netsky Worm ,bagle Worm ,Sasser Worm 등이 있습니다.  그 중 몇가지 worm에 대해 설명드리겠습니다. 

 

  Morris Worm은 최초로 등장한 웜이라고 해서 꽤 유명한 웜입니다. 실제 제작자인 Robert Morris의 이름을 따서 지어진 이름이죠. Morris Worm은 당시 전세계 모든 유닉스 컴퓨터 중 10%에 해당하는 규모의, 즉 약 6000대를 감염시킨 웜입니다. 이 프로그램의 제작 의도가 '인터넷의 크기를 알아내려고'임을 알고나니 황당하기도 하죠. 물론 이런 순수한 의도 덕분에 감염된 pc가 크게 피해를 입지 않았지만, 이로인해 '네트워크'상에 엄청난 영향을 주었고, 이로인해 '네트워크'를 공격할 수 있는 악성프로그램 'Worm'의 시발점이 되었습니다. 

 

  code red worm은 2001년 당시 25만대 이상의 컴퓨터를 감염시킨 웜으로, 마이크로소프트 인터넷 정보 서비스(IIS)의 buffer overflow 취약점을 이용해 제작되었습니다. 이 code red worm에는 20~27일 동안 잠복한 후 미국 백악관 홈페이지 등 몇몇 IP에 DOS 공격을 취하는 기능도 포함되어 있었습니다.

 

  SQL Slammer는 2003년에 등장하여 10분만에 75,000 대 이상의 컴퓨터를 감염시킨 웜으로, 마이크로소프트의 'SQL Server'와 Desktop Engine database 제품에서 발생한 buffer overflow 버그를 이용해 제작되었습니다.  

 

  Blaster Worm은 2003년에 등장하여 1~2분 간격으로 컴퓨터를 재부팅 시켜 국내외적으로 큰 피해를 준 웜입니다. 추가적으로 이 blaster worm의 제작자는 대담하게도 프로그램 안에 당시 마이크로소프트 기술 고문이었던 빌 게이츠에게  'billy gates why do you make this possible? Stop making money and fix your software!!'이라는 메세지를 남겼습니다. 


<Blater worm을 hex dump한 모습>

 

  Whlchia Worm은 Nachi Worm으로도 알려져 있는 웜으로, 감연된 pc 안의 Blaster worm을 제거하고, blaster worm에 의한 추가 감염을 방지할 수 있도록 마이크로소프트의 보안패치를 적용시킨 후 스스로 삭제됩니다. worm을 없애기 위해 worm을 이용하다니 꽤나 신박하네요. 

 

  sobig.F Worm은 2003년에 등장하여 감염됨 pc를 통해 메일 발신 주소를 위장하여 스팸 메일을 발송하도록하는 웜으로, sobig worm 중 가장 크게 영향을 끼쳤습니다. ( sobig worm에는 sobig.A,sobig.B~sobig.F까지 존재합니다.)

 

  마지막으로 Mydoom Worm은 2004년에 등장해 역대 최고의 전파 속도로 전세계 100만대 이상의 PC를 감염시킨 worm으로, 당시에 전자 메일 스패머가 감연된 컴퓨터를 통해 스팸메일을 보냈다고 알려져 있습니다. 


<Worm의 종류>

  -Morris Worm(1989)

  -code red Worm(2001.7.13)

  -SQL Slammer(2003)

  -Blaster Worm(2003.8.11)

  -Welchia Worm(2003)

  -sobig.F Worm(2003)

  -Mydoom Worm(2004.1.26)

  -Netsky Worm (2004)

  -bagle Worm(2004)

  -Sasser Worm(2004)

 

 오늘은 worm의 정의와 종류를 끝으로 포스팅을 마무리하겠습니다. 혹시 제가 쓴 포스팅에서 오류를 발견하시면 comment 남겨주세요! 끝까지 읽어주셔서 감사합니다.


'정보보안' 카테고리의 다른 글

5. 시스템 해킹 (System hacking)  (145) 2018.01.29
3.메모리 보호기법  (2) 2018.01.05
Anti Reversing  (0) 2017.12.27
Ransomware  (0) 2017.12.18

3. 메모리 보호기법



안녕하세요. 이번주는 '메모리 보호기법'에 대해 포스팅하겠습니다.


 우선 '메모리 보호'의 정의를 알아봅시다. 메모리 보호란 '컴퓨터 메모리의 사용을 제어하는 방법'입니다. 좀 더 자세히 말하자면 'OS에서 실행하고 있는 프로세스가 자신에게 할당되지 않은 영역의 메모리에 접근하는 것을 막는 것'이라고 할 수 있습니다. 한마디로 허가되지 않은 메모리 접근으로 인한 영향을 미리 예방하는 것입니다. 


<메모리 보호의 정의>

  -컴퓨터 메모리의 사용을 제어하는 방법

  -OS에서 실행하고 있는 프로세스가 자신에게 할당되지 않은 영역의 메모리에 접근하는 것을 막는 것

   (=허가되지 않은 메모리 접근으로 인한 영향을 미리 예방하는 것)


 자, 이제 메모리 보호기법의 종류에 대해 알아보겠습니다. 사실 메모리 보호 기법은 점점 발전해 나가는 시스템 해킹에 대응하여 발전해 왔습니다. 그 중 오늘은 총 4가지의 메모리 보호기법을 다루겠습니다. 


 우선 가장 첫번째로 'ASLR'부터 설명하겠습니다. ASLR은 Address Space Layout Randomization의 약자로, 그 이름에서 알 수 있듯이 뭉뜬그려 말하면 '실행 및 호출 할 때 마다 주소 배치를 무작위로 배정하는 기법'입니다. 그러면 무엇의 주소 공간을 무작위로 배정한다는 것일까요? 바로 heap, stack, libc 등의 주소 공간입니다. 이러한 ASLR 기법의 효과는 buffer overflow 공격을 힘들게 한다는 점이지만, 이 또한 NOP sled, RTL, ROP 등으로 우회할 수 있습니다. 그럼 정리를 하면 ASLR 기법은 '실행할 때 마다 heap,stack,libc 등의 주소를 프로세스 주소 공간에 무작위로 배치하는 기법'입니다. 


 두 번째로는 'DEP/NX'에 대해 설명하겠습니다. DEP와 NX는 둘 다 같은 개념의 보호기법으로 각각 Data Execution Protection과 Non executable의 약자입니다. 각각의 의미를 읽어보면 한 마디로 '실행시키지 않는다'입니다. 좀 더 자세히 말하자면 'heap과 stack과 같이 buffer overflow 공격에 이용되는 메모리 공간에 있는 코드를 실행시키지 않는다'는 것이죠. (쉘 코드 실행 x) 


 세 번째로는 'ASCII-Armor'에 대해 설명하겠습니다. ASCII-Armor는 '라이브러리 함수(Libc)의 상위 주소에 \x00인 NULL 바이트를 삽입하는 기법'입니다. 이로써 buffer overflow에서 이용되는 'strcpy()'와 같은 취약한 함수들을 통한 공격을 힘들게 만듭니다. (strcpy()는 NULL byte를 만나면 종료) 


 마지막으로 'Canary'기법에 대해 설명하겠습니다. Canary기법이란 'buffer와 SFP(Stack Frame Pointer) 사이에 buffer overflow를 탐지하기 위한 임의의 데이터를 삽입하는 기법'입니다. 만약 buffer overflow를 통해 공격을 하면 canary가 변경되어 경고가 발생할 것입니다. 카나리에는 terminator canary, random canary 등이 있고, StackGuard와 ProPolice 등에서 canary 기법을 지원합니다.


<메모리 보호기법의 종류>

  1). ASLR (Address Space Layout Randomization)

      - 실행할 때 마다 heap,stack,libc 등의 주소를 프로세스 주소 공간에 무작위로 배치하는 기법

  2). DEP/NX (Data Execution Protection/Non-Executable)

      - heap과 stack과 같이 buffer overflow 공격에 이용되는 메모리 공간에 있는 코드를 실행시키지 않는 기법

  3). ASCII-Armor

      - 라이브러리 함수(Libc)의 상위 주소에 \x00인 NULL 바이트를 삽입하는 기법

  4). Canary

      - buffer와 SFP(Stack Frame Pointer) 사이에 buffer overflow를 탐지하기 위한 임의의 데이터(canary)를 삽입하는 기법


 이렇게 목표했던 메모리 보호의 정의와 메모리 보호기법의 종류에 대한 설명이 끝났습니다. 그럼 포스팅을 마무리 하겠습니다. 만약 틀린 내용이 있다면 comment를 남겨주세요! (그냥 심심해서 comment 남겨주시면 더욱 감사합니다.)

'정보보안' 카테고리의 다른 글

5. 시스템 해킹 (System hacking)  (145) 2018.01.29
4. Worm  (2) 2018.01.11
Anti Reversing  (0) 2017.12.27
Ransomware  (0) 2017.12.18

 안녕하세요. 오늘은 'Anti Reversing'을 주제로 포스팅을 하겠습니다.

 

1. Anti Reversing이란

 우선 'Reversing'이란 무엇일까요? 정보보안에서 Reverse Engineering이란 기계어로 이루어진 실행 파일을 분석하여 프로그램의 동작 방식(로직)을 유추하는 기술입니다.

 

 개발자가 아니신 분을 위해 설명을 덧붙이자면, 기계어란 컴퓨터가 이해할 수 있는 이진수로 작성하는 언어입니다. (ex. 0101010101...) 이진수로 이루어져 있기 때문에 사람이 기계어를 이해하기 쉽지 않죠.

개발자들은 C 또는 Java와 같은 인간이 이해하기 쉬운 프로그래밍 언어를 통해 프로그램의 소스코드를 작성하고,
이를 컴퓨터가 이해할 수 있는 언어인 기계어로 컴파일한 뒤 exe와 같은 실행 가능한 File로 프로그램을 빌드한 후 배포를 합니다.

 Reversing이 무엇인지 알았으니, 'Anti Reversing'이 무엇인지 바로 감이 올것입니다. 여러분이 생각대로 Anti Reversing이란 Reversing하는 것을 방해하는 기술입니다. 그럼 왜 Reversing하는 것을 막으려고 하는 것일까요? 그건 'Reversing'이라는 기술이 악의적인 목적으로 사용될 수 있기 때문입니다. 악의적인 목적으로 사용되는 예시를 들자면, Program Copy나 프로그램의 라이센스 없이 crack을 통해 사용하는 것 등이 있습니다. 총 정리해보면 'Anti Reversing'이란 '악의적인 목적을 가진 이가 Reversing하는 것을 방해하는 기술'이라고 할 수 있습니다.

Reverse Engineering은 개발자가 완성된 프로그램을 patch할 때나, 악성코드 분석 할 때 등 좋은 목적으로 사용되기도 합니다.

<Reversing의 정의>
   - 기계어로 이루어진 프로그램 실행 파일을 분석하여 프로그램의 동작 방식을 분석하는 것

<Anti Reversing의 정의>

   - Reversing을 방해하는 기술 (프로그램 로직을 분석할 수 없도록하는 기술)

   - 악의적인 목적을 가진 이가 Reversing하는 것을 방해한다                   

 

2. 마무리

 사실 Anti Reversing 기법의 종류에 대해서도 다룰려고 했으나, 워낙에 많은 기법들이 있어 소개해 드리기가 어려워 정의에 대해서만 짧게 알려드리고 마치게 되었습니다. (몇가지 알려드리자면 api를 이용해 debugger를 탐지하거나 TLS 기법을 이용한 방법들이 있습니다.) 그럼 오늘은 이렇게 'Anti Reversing'에 대한 포스팅을 끝마치겠습니다. (다음번에 시간이 된다면 anti-reversing 기법에 대해 추가로 포스팅 하겠습니다.) 읽어주셔서 감사합니다. 

 

'정보보안' 카테고리의 다른 글

5. 시스템 해킹 (System hacking)  (145) 2018.01.29
4. Worm  (2) 2018.01.11
3.메모리 보호기법  (2) 2018.01.05
Ransomware  (0) 2017.12.18

 첫 포스팅으로 최근 몇 년 동안 국내외로 큰 이슈를 일으켰던 랜섬웨어(Ransomware)에 대해 다루겠습니다. 

 

1. 랜섬웨어의 어원

 우선 어원부터 알아보겠습니다. 랜섬웨어의 어원은 '몸값, 몸값을 반환하다'라는 뜻의 'Ransom'과 프로그램이라는 뜻의 'Software'가 합쳐진 합성어입니다. 실제로 랜섬웨어는 피해자의 시스템을 인질로 금전(=몸값)을 요구하는 악성 프로그램입니다.

<Ransomware의 어원>
  - Ransom(몸값, 몸값을 반환하다) + Software의 합성어

<Ransomware의 정의>
  - 시스템을 잠그거나 피해자의 개인 데이터를 암호화해 접근할 수 없도록 한 후, 이를 인질로 금전을 요구하는 악성 프로그램 (Malware)

 

2. 잘 알려진 랜섬웨어

1). WannaCry

 먼저 올 한해 전 세계적으로 큰 피해를 입힌 'WannaCry'는 2017년 5월 12일부터 등장한 랜섬웨어로 이터널 블루라는 마이크로소프트 윈도우의 취약점을 악용하여 제작되었고, 감염이 되면 시스템 내의 파일들이 암호화됩니다.

 

2). Locky

 2016년 2월에 첫 등장한 'Locky'는 다양한 파일을 암호화한 후 확장자 명을 (.locky)로 변경시키는 랜섬웨어로, 'RSA-2048', 'AES-128'유형의 암호화 기법을 사용하며 locker 계통 중에서 가장 막강한 유형의 랜섬웨어입니다. 

 

3). TeslaCrypt

 'TeslaCrypt'는 'CryptoLocker'와 'CryptoWall'을 조합해서 만들어진 랜섬웨어로 문서파일뿐만 아니라 게임 파일까지 감염시킵니다. 

 

4). RaaS(Ransomware as a Service)

 'RaaS(Ransomware as a Service)'란 실제 랜섬웨어의 명칭이 아니라 랜섬웨어가 서비스 형태로 진화된 것을 말하는 것입니다. 여기서 말하는 서비스 형태란 실제 RaaS형 랜섬웨어를 제작한 사람인 '제작자'와 이 랜섬웨어를 사용해 공격하는 '공격자'가 나누어져 있는 것으로 '공격자'는 랜섬웨어를 제작할 기술적 역량이 없어도 제작자로부터 랜섬웨어를 제공받아 공격할 수 있습니다. (본래의 랜섬웨어는 제작자가 공격하는 형태였습니다.) 이러한 RaaS 계통의 랜섬웨어로는 '케르베르(Cerber)', '사탄(Satan)'등이 있습니다. 

<Ransomware>

  1). WannaCry (2017년 5월 12일 등장)

      -이터널 블루 취약점 사용 (마이크로소프트 윈도우)

      -한국어를 비롯한 28개의 다국적 언어를 지원

  2). Locky(2016년 2월 등장)

      -파일 암호화 후 확장자 명을 (.locky)로 변경

      -RSA-2048과 AES-128 유형의 암호화 기법 사용

      -locker 개통의 랜섬웨어 중에서 가장 막강

  3). TeslaCrypt 

      -'CryptoLocker'와 'CryptoWall'을 조합해 제작

      -문서 파일 외에도 게임 파일 또한 감염

  4). RaaS (실제 랜섬웨어 x, 신 유형의 랜섬웨어 o)

      -이전과는 달리 서비스 형태로 진화된 랜섬웨어들을 통칭

      -랜섬웨어 제작자가 공격자에게 랜섬웨어를 제공하면, 공격자가 제공받은 랜섬웨어를 통해 공격하는 형태

      -RaaS 계통의 랜섬웨어: 케르베르(Cerber), 사탄(Satan)

 

3. 감염 경로

 세 번째로 랜섬웨어 감염경로에 대해 알아보겠습니다. 감염 경로로는 '신뢰할 수 없는 사이트', '스팸메일', '파일 공유 사이트', 'SNS', '네트워크망' 이 있습니다. 신뢰할 수 없는 사이트의 경우 단순히 페이지 방문만으로도 Drive-by-Download 기법을 통해 랜섬웨어가 설치되어 감염될 수 있습니다. 스팸메일은 출처가 불분명한 이메일 수신 시 첨부파일 또는 메일에 URL 링크를 넣어 악성코드를 유포합니다. 파일공유 사이트는 Torrent, 웹하드 등 P2P 사이트를 통해 파일을 다운로드하고 이를 실행할 경우 감염됩니다. SNS로는 sns에 올라온 사진 및 단축 URL을 이용해 랜섬웨어를 유포합니다. 네트워크망으로는 네트워크를 통해 최신 보안패치가 적용되지 않은 PC를 스캔하여 악성코드를 감염 및 확산시킵니다.

<Ransomware 감염경로>

  1). 신뢰할 수 없는 사이트

      -단순한 페이지 방문으로도 감염

      -Drive-by-Download 기법을 통해 유포

  2). 스팸메일

      -첨부파일 및 메일에 URL 링크를 넣어 악성코드를 유포

  3). 파일공유 사이트

      -P2P 사이트에서 파일을 다운로드하고 이를 실행할 경우 감염 (Torrent, 웹 서버)

  4). SNS

      -SNS에 올라온 사진 및 단축 URL을 통해 유포

  5). 네트워크망

      -네트워크를 통해 최신 보안패치가 적용되지 않은 PC를 스캔하여 악성코드를 감염 및 확산.

 

4. 마무리

 이로써 랜섬웨어에 대한 포스팅을 마치겠습니다. 그리고 마지막으로 당부드리고 싶은 것은 랜섬웨어에 걸리지 않도록 위에 나와있는 감염경로를 조심하시고, 자신이 쓰는 운영체제의 보안 패치를 꼭 받는 것입니다. 읽어주셔서 감사합니다.

'정보보안' 카테고리의 다른 글

5. 시스템 해킹 (System hacking)  (145) 2018.01.29
4. Worm  (2) 2018.01.11
3.메모리 보호기법  (2) 2018.01.05
Anti Reversing  (0) 2017.12.27

+ Recent posts