SlideShare a Scribd company logo
1 of 5
Download to read offline
이승용 - bongbongco@gmail.com
문자열이란 무엇인가.
어순이 다른 언어
1. 세계의 다양한 언어
지난 문서에서 미국이 주도한 컴퓨터 시장에서 미국의 문자 집합인 ASCII TABLE로 표현할 수 없는 문자
를 표현하기 위해서 문자집합과 인코딩 방식을 만들어서 여러 문자를 지원하는 것을 살펴보았습니다. 세
계의 다양한 언어 중에는 한글과 반대 어순을 가지고 있는 언어가 있는 데 여기에 대해서 알아보도록 하겠
습니다.
2. 어순이 다른 언어
2.1. 셈어파
중동과 북동부 아프리카의 어파로 약 2억명 이상의 인구가 사용하고 있습니다. 아랍어와 히브리어가 여기
에 속합니다. 아랍어의 경우 해당 언어를 모르는 사람들이 보면 어디서 부터 읽어야 할지도 모를 정도로
개성이 강한 언어입니다. 한국인 입장에서 느낄 수 있는 큰 특징으로 문자를 오른쪽에서 왼쪽으로 작성한
다는 것이 있습니다.
2.2. 아랍어 윈도우
이미지에서 확인할 수 있듯이 어순이 반대이기 때문에 모든 인터페이스가 반대로 되어 있는 것을 볼 수 있
습니다. 윈도우 인터페이스 이외에도 워드 프로그램으로 아랍어를 혼용하여 사용하게 되면 부호와 특수문
자의 위치가 변경되는 등의 혼란스러운 경험을 하게 됩니다.
1. 아랍어로 구동된 윈도우 운영체제
이승용 - bongbongco@gmail.com
2.1. RTLM (Right To Left Mark)
라틴 계열 언어를 기반으로 만들어진 컴퓨터는 알파벳을 제외한 다른 언어를 고려하지 않았었습니다. 컴
퓨터가 세계적으로 보편화되면서 다양한 언어들을 지원하게 되는 데, 아랍어와 같이 어순이 다른 언어는
어떻게 지원하고 있을까요. 바로 어순 변경을 알리는 출력되지 않는 문자를 삽입하여 이를 해결하고 있습
니다.
RTLM을 사용한 HTML 문서
1. 동일한 두 문장 중에서 한 문장에만 RTLM 삽입
2. RTLM을 삽입한 문장이 역순으로 출력된 것을 확인
Right to Left Mark 를 삽입한 줄은 어순이 반대로 출력된 것을 볼 수 있습니다. (아랍어를 해석할 수는
없지만 느낌표를 보면 알 수 있습니다!)
이승용 - bongbongco@gmail.com
3. RTLM 을 활용한 취약점
유니코드에서는 ‘U+202e’ 문자를 이용하여 어순을 오른쪽에서 왼쪽으로 변경하고 있으며 RTLO(Right
To Left Override) 혹은 RLO(Right Left Override)로 명명하고 있습니다. 단순히 어순 변경 문자를 삽입
하였을 뿐인데 여러가지 형태의 치명적인 공격이 가능하게 되는 데 이를 알아보도록 하겠습니다.
3.1. 악성코드 공격
오랜만에 피카츄 배구가 하고 싶어 네이버에서 피카츄 배구를 검색하여 다운받은 압축파일에는 “피카츄
배구잘하는방법exe.txt” 이라는 파일이 함께 압축되어 있다고 가정해보겠습니다.
1. 동일한 이름의 두개의 파일 확인
2. 텍스트 문서 아이콘으로 작성되어 있는 파일 실행하여 메모장 실행 확인
3. 응용프로그램 아이콘으로 작성되어 있는 파일 실행하여 응용프로그램 실행 오류 창 확인
이승용 - bongbongco@gmail.com
‘pika.exe’ 와 함께 있는 두 개의 ‘피카츄배구잘하는방법exe.txt’ 파일을 실행하고 그 결과를 확인하였습니
다. 동일한 ‘.txt’ 확장자를 가지고 있는 것으로 보이지만 실행 결과를 보면 다른 형식의 파일이라는 것을
알 수 있습니다. 다시 말해 응용프로그램의 아이콘을 가지고 있는 파일의 확장자는 ‘.txt’ 가 아니라 ‘.exe’
인 것입니다. 어떻게 이것이 가능할 수 있을까요. 유니코드의 ‘U+202e’ 를 이용하면 가능합니다. ‘피카츄
배구잘하는방법[U+202e]exe.txt’ 는 [U+202e] 이하 문자가 역순으로 처리되어 ‘피카츄배구잘하는방법
txt.exe’로 처리됩니다. 아이콘을 변경한 상태에서 유포하게 된다면 별다른 의심없이 파일을 실행하게 되
어 공격자의 랜섬웨어에 감염되거나 키로거가 실행되는 등의 악성 행위에 피해를 입을 가능성이 높아 보
입니다.
3.2. 파일 업로드 공격
사용자가 직접 확장자나 파일 유형을 확인하는 경우도 있지만, 컴퓨터가 확장자를 확인해야 하는 경우도
있습니다.
어순 변경을 통해서 확장자 체크 로직 우회하기
업로드 확인을 위한 ‘Hello World!’를 출력하는 간단한 코드를 작성하고 어순을 변경하여 업로드를 시도
하였습니다. 서버 프로그램에서 확장자를 추출하는 방식에 따라서 로직을 우회할 수 있는 가능성이 있습
니다.
1. RTLO 문자를 삽입한 PHP 파일로 업로드 시도
2. 파일 업로드 확인
<? echo "Hello World!" ?>
이승용 - bongbongco@gmail.com
4. 마치며
어순이 다르다는 언어적 특징을 악용해서 발생될 수 있는 취약점에 대해서 알아보았습니다. 모르셨던 분
들에게는 도움이 되는 문서가 되었으면 좋겠습니다. 실습을 하다보니 간편하게 ‘U+202e’를 삽입하는 툴
을 하나 만들어둬야 겠다는 생각이 드네요. 재미없는 글 끝 까지 읽어주셔서 감사합니다.

More Related Content

Viewers also liked

Secret of getting high package IT jobs
Secret of getting high package IT jobsSecret of getting high package IT jobs
Secret of getting high package IT jobsShitalkumar Sukhdeve
 
Places In Between
Places In BetweenPlaces In Between
Places In Betweensueschoef
 
حزب البناء الوطني ندوة دولية - الدولة والمجتمع في تونس..حدود الانتقال
حزب البناء الوطني  ندوة دولية - الدولة والمجتمع في تونس..حدود الانتقالحزب البناء الوطني  ندوة دولية - الدولة والمجتمع في تونس..حدود الانتقال
حزب البناء الوطني ندوة دولية - الدولة والمجتمع في تونس..حدود الانتقالحزب البناء الوطني
 
Scott Thomson, Darren Drew. getting data fit
Scott Thomson, Darren Drew. getting data fitScott Thomson, Darren Drew. getting data fit
Scott Thomson, Darren Drew. getting data fitbetterbigdata
 
Leadership 101
Leadership 101Leadership 101
Leadership 101mupudziw
 
Marketing plan
Marketing planMarketing plan
Marketing planSakil Sam
 
Jaguar Watches-feeldiamonds-com
Jaguar Watches-feeldiamonds-comJaguar Watches-feeldiamonds-com
Jaguar Watches-feeldiamonds-comFeeldiamonds com
 
Versace-sunglasses-feeldiamonds-com
Versace-sunglasses-feeldiamonds-comVersace-sunglasses-feeldiamonds-com
Versace-sunglasses-feeldiamonds-comFeeldiamonds com
 
ملحوظات عامة حول مشروع قانون اساسي يتعلق بمكافحة الارهاب ومنع غسل الاموال- ال...
ملحوظات عامة حول مشروع قانون اساسي يتعلق بمكافحة الارهاب ومنع غسل الاموال- ال...ملحوظات عامة حول مشروع قانون اساسي يتعلق بمكافحة الارهاب ومنع غسل الاموال- ال...
ملحوظات عامة حول مشروع قانون اساسي يتعلق بمكافحة الارهاب ومنع غسل الاموال- ال...حزب البناء الوطني
 
De thi ks chat luong hoc he 10 len 11
De thi ks chat luong hoc he 10 len 11De thi ks chat luong hoc he 10 len 11
De thi ks chat luong hoc he 10 len 11conmeocon2804
 

Viewers also liked (10)

Secret of getting high package IT jobs
Secret of getting high package IT jobsSecret of getting high package IT jobs
Secret of getting high package IT jobs
 
Places In Between
Places In BetweenPlaces In Between
Places In Between
 
حزب البناء الوطني ندوة دولية - الدولة والمجتمع في تونس..حدود الانتقال
حزب البناء الوطني  ندوة دولية - الدولة والمجتمع في تونس..حدود الانتقالحزب البناء الوطني  ندوة دولية - الدولة والمجتمع في تونس..حدود الانتقال
حزب البناء الوطني ندوة دولية - الدولة والمجتمع في تونس..حدود الانتقال
 
Scott Thomson, Darren Drew. getting data fit
Scott Thomson, Darren Drew. getting data fitScott Thomson, Darren Drew. getting data fit
Scott Thomson, Darren Drew. getting data fit
 
Leadership 101
Leadership 101Leadership 101
Leadership 101
 
Marketing plan
Marketing planMarketing plan
Marketing plan
 
Jaguar Watches-feeldiamonds-com
Jaguar Watches-feeldiamonds-comJaguar Watches-feeldiamonds-com
Jaguar Watches-feeldiamonds-com
 
Versace-sunglasses-feeldiamonds-com
Versace-sunglasses-feeldiamonds-comVersace-sunglasses-feeldiamonds-com
Versace-sunglasses-feeldiamonds-com
 
ملحوظات عامة حول مشروع قانون اساسي يتعلق بمكافحة الارهاب ومنع غسل الاموال- ال...
ملحوظات عامة حول مشروع قانون اساسي يتعلق بمكافحة الارهاب ومنع غسل الاموال- ال...ملحوظات عامة حول مشروع قانون اساسي يتعلق بمكافحة الارهاب ومنع غسل الاموال- ال...
ملحوظات عامة حول مشروع قانون اساسي يتعلق بمكافحة الارهاب ومنع غسل الاموال- ال...
 
De thi ks chat luong hoc he 10 len 11
De thi ks chat luong hoc he 10 len 11De thi ks chat luong hoc he 10 len 11
De thi ks chat luong hoc he 10 len 11
 

More from Seungyong Lee

Secure coding-c-dcl-1
Secure coding-c-dcl-1Secure coding-c-dcl-1
Secure coding-c-dcl-1Seungyong Lee
 
Secure coding-c-preprocessor-3
Secure coding-c-preprocessor-3Secure coding-c-preprocessor-3
Secure coding-c-preprocessor-3Seungyong Lee
 
Secure coding-c-preprocessor-2
Secure coding-c-preprocessor-2Secure coding-c-preprocessor-2
Secure coding-c-preprocessor-2Seungyong Lee
 
Secure coding-c-preprocessor-1
Secure coding-c-preprocessor-1Secure coding-c-preprocessor-1
Secure coding-c-preprocessor-1Seungyong Lee
 
Linux blue borne-vulnerabilities
Linux blue borne-vulnerabilitiesLinux blue borne-vulnerabilities
Linux blue borne-vulnerabilitiesSeungyong Lee
 
Sha 2017-teaser-round website attack writeup
Sha 2017-teaser-round website attack writeupSha 2017-teaser-round website attack writeup
Sha 2017-teaser-round website attack writeupSeungyong Lee
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇Seungyong Lee
 
화이트 박스 암호기법
화이트 박스 암호기법화이트 박스 암호기법
화이트 박스 암호기법Seungyong Lee
 
C 프로그램 메모리 구조
C 프로그램 메모리 구조C 프로그램 메모리 구조
C 프로그램 메모리 구조Seungyong Lee
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리Seungyong Lee
 
암호 기법의 소개
암호 기법의 소개암호 기법의 소개
암호 기법의 소개Seungyong Lee
 
문자열이란 무엇인가
문자열이란 무엇인가문자열이란 무엇인가
문자열이란 무엇인가Seungyong Lee
 

More from Seungyong Lee (14)

Secure coding-c-dcl-1
Secure coding-c-dcl-1Secure coding-c-dcl-1
Secure coding-c-dcl-1
 
Secure coding-c-preprocessor-3
Secure coding-c-preprocessor-3Secure coding-c-preprocessor-3
Secure coding-c-preprocessor-3
 
Secure coding-c-preprocessor-2
Secure coding-c-preprocessor-2Secure coding-c-preprocessor-2
Secure coding-c-preprocessor-2
 
Secure coding-c-preprocessor-1
Secure coding-c-preprocessor-1Secure coding-c-preprocessor-1
Secure coding-c-preprocessor-1
 
Linux blue borne-vulnerabilities
Linux blue borne-vulnerabilitiesLinux blue borne-vulnerabilities
Linux blue borne-vulnerabilities
 
Sha 2017-teaser-round website attack writeup
Sha 2017-teaser-round website attack writeupSha 2017-teaser-round website attack writeup
Sha 2017-teaser-round website attack writeup
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇
 
화이트 박스 암호기법
화이트 박스 암호기법화이트 박스 암호기법
화이트 박스 암호기법
 
Dll 하이재킹
Dll 하이재킹Dll 하이재킹
Dll 하이재킹
 
Frida tutorial 1
Frida tutorial 1Frida tutorial 1
Frida tutorial 1
 
C 프로그램 메모리 구조
C 프로그램 메모리 구조C 프로그램 메모리 구조
C 프로그램 메모리 구조
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리
 
암호 기법의 소개
암호 기법의 소개암호 기법의 소개
암호 기법의 소개
 
문자열이란 무엇인가
문자열이란 무엇인가문자열이란 무엇인가
문자열이란 무엇인가
 

문자열이란 무엇인가 2편 어순이 달라 발생하는 취약점

  • 1. 이승용 - bongbongco@gmail.com 문자열이란 무엇인가. 어순이 다른 언어 1. 세계의 다양한 언어 지난 문서에서 미국이 주도한 컴퓨터 시장에서 미국의 문자 집합인 ASCII TABLE로 표현할 수 없는 문자 를 표현하기 위해서 문자집합과 인코딩 방식을 만들어서 여러 문자를 지원하는 것을 살펴보았습니다. 세 계의 다양한 언어 중에는 한글과 반대 어순을 가지고 있는 언어가 있는 데 여기에 대해서 알아보도록 하겠 습니다. 2. 어순이 다른 언어 2.1. 셈어파 중동과 북동부 아프리카의 어파로 약 2억명 이상의 인구가 사용하고 있습니다. 아랍어와 히브리어가 여기 에 속합니다. 아랍어의 경우 해당 언어를 모르는 사람들이 보면 어디서 부터 읽어야 할지도 모를 정도로 개성이 강한 언어입니다. 한국인 입장에서 느낄 수 있는 큰 특징으로 문자를 오른쪽에서 왼쪽으로 작성한 다는 것이 있습니다. 2.2. 아랍어 윈도우 이미지에서 확인할 수 있듯이 어순이 반대이기 때문에 모든 인터페이스가 반대로 되어 있는 것을 볼 수 있 습니다. 윈도우 인터페이스 이외에도 워드 프로그램으로 아랍어를 혼용하여 사용하게 되면 부호와 특수문 자의 위치가 변경되는 등의 혼란스러운 경험을 하게 됩니다. 1. 아랍어로 구동된 윈도우 운영체제
  • 2. 이승용 - bongbongco@gmail.com 2.1. RTLM (Right To Left Mark) 라틴 계열 언어를 기반으로 만들어진 컴퓨터는 알파벳을 제외한 다른 언어를 고려하지 않았었습니다. 컴 퓨터가 세계적으로 보편화되면서 다양한 언어들을 지원하게 되는 데, 아랍어와 같이 어순이 다른 언어는 어떻게 지원하고 있을까요. 바로 어순 변경을 알리는 출력되지 않는 문자를 삽입하여 이를 해결하고 있습 니다. RTLM을 사용한 HTML 문서 1. 동일한 두 문장 중에서 한 문장에만 RTLM 삽입 2. RTLM을 삽입한 문장이 역순으로 출력된 것을 확인 Right to Left Mark 를 삽입한 줄은 어순이 반대로 출력된 것을 볼 수 있습니다. (아랍어를 해석할 수는 없지만 느낌표를 보면 알 수 있습니다!)
  • 3. 이승용 - bongbongco@gmail.com 3. RTLM 을 활용한 취약점 유니코드에서는 ‘U+202e’ 문자를 이용하여 어순을 오른쪽에서 왼쪽으로 변경하고 있으며 RTLO(Right To Left Override) 혹은 RLO(Right Left Override)로 명명하고 있습니다. 단순히 어순 변경 문자를 삽입 하였을 뿐인데 여러가지 형태의 치명적인 공격이 가능하게 되는 데 이를 알아보도록 하겠습니다. 3.1. 악성코드 공격 오랜만에 피카츄 배구가 하고 싶어 네이버에서 피카츄 배구를 검색하여 다운받은 압축파일에는 “피카츄 배구잘하는방법exe.txt” 이라는 파일이 함께 압축되어 있다고 가정해보겠습니다. 1. 동일한 이름의 두개의 파일 확인 2. 텍스트 문서 아이콘으로 작성되어 있는 파일 실행하여 메모장 실행 확인 3. 응용프로그램 아이콘으로 작성되어 있는 파일 실행하여 응용프로그램 실행 오류 창 확인
  • 4. 이승용 - bongbongco@gmail.com ‘pika.exe’ 와 함께 있는 두 개의 ‘피카츄배구잘하는방법exe.txt’ 파일을 실행하고 그 결과를 확인하였습니 다. 동일한 ‘.txt’ 확장자를 가지고 있는 것으로 보이지만 실행 결과를 보면 다른 형식의 파일이라는 것을 알 수 있습니다. 다시 말해 응용프로그램의 아이콘을 가지고 있는 파일의 확장자는 ‘.txt’ 가 아니라 ‘.exe’ 인 것입니다. 어떻게 이것이 가능할 수 있을까요. 유니코드의 ‘U+202e’ 를 이용하면 가능합니다. ‘피카츄 배구잘하는방법[U+202e]exe.txt’ 는 [U+202e] 이하 문자가 역순으로 처리되어 ‘피카츄배구잘하는방법 txt.exe’로 처리됩니다. 아이콘을 변경한 상태에서 유포하게 된다면 별다른 의심없이 파일을 실행하게 되 어 공격자의 랜섬웨어에 감염되거나 키로거가 실행되는 등의 악성 행위에 피해를 입을 가능성이 높아 보 입니다. 3.2. 파일 업로드 공격 사용자가 직접 확장자나 파일 유형을 확인하는 경우도 있지만, 컴퓨터가 확장자를 확인해야 하는 경우도 있습니다. 어순 변경을 통해서 확장자 체크 로직 우회하기 업로드 확인을 위한 ‘Hello World!’를 출력하는 간단한 코드를 작성하고 어순을 변경하여 업로드를 시도 하였습니다. 서버 프로그램에서 확장자를 추출하는 방식에 따라서 로직을 우회할 수 있는 가능성이 있습 니다. 1. RTLO 문자를 삽입한 PHP 파일로 업로드 시도 2. 파일 업로드 확인 <? echo "Hello World!" ?>
  • 5. 이승용 - bongbongco@gmail.com 4. 마치며 어순이 다르다는 언어적 특징을 악용해서 발생될 수 있는 취약점에 대해서 알아보았습니다. 모르셨던 분 들에게는 도움이 되는 문서가 되었으면 좋겠습니다. 실습을 하다보니 간편하게 ‘U+202e’를 삽입하는 툴 을 하나 만들어둬야 겠다는 생각이 드네요. 재미없는 글 끝 까지 읽어주셔서 감사합니다.