보안/웹 보안

0905 웹해킹 2일차(Application Security)

Bordercolli 2022. 9. 19. 17:16
728x90

웹 보안 2일차

 

웹 보안의 이슈

- 사진, 텍스트, 링크

- 회원가입, 장바구니, 게시판 글쓰기, 파일 업로드, 동영상 업로드, 실시간 채팅, 화상회의 등등 수 많은 기능을 www환경에서 실행

- 다양한 부분에서 취약점 등이 발생하는 문제

 

SQL인젝선

- SQL문의 조건절을 참이 되도록 만들어서 공격자가 의도하는 결과를 만들어내는 공격

- ex) 공격 종류: login bypass(로그인 우회), DB에 있는 정보를 획득/ 조작 등등

 

XSS(cross site scripting)

- 스크립트를 활용한 공격

- 스크립트는 공격자가 작성하기 나름이기 때문에 다양한 공격이 가능하다.

- 최근에 가장 많은 공격이 발생하는 것은 악성코드를 자연스럽게 다운로드 하도록 유도(Drive by Download: DBD)

 

DBD공격 유형(최근에 가장 많음)

- 이 스크립트를 통해서 다운로드 하도록 유도하는 것

- 스크립트 자체는 악성코드가 아님 악성 행위가 없어서 보안 솔루션에 잘 탐지디지 않음. 그래서 정상 동작을 하게 된다.

- 스크립트는 악성코드를 다운로드하게 한 다음에(보안 솔루션이라고 속이고 다운로드를 유도한다.) 사용자를 속여서 마우스 클릭을 유도한다. 그러면 악성코드가 실행되면 랜섬웨어, 트로이목마가 동작하게 된다.

 

쿠키값을 훔치는 방법(최근에는 잘 안함)

- 쿠키는 사용자의 신분증인데, 이를 방문자의 웹 브라우저가 스크립트가 있는 페이지를 방문하면 스크립트는 쿠키를 공격자의 컴퓨터 쪽으로 보낸다. 그러면 공격자는 자신의 쿠키를 지우고 훔친 쿠키로 바꾼다. 이러고 해당 웹 사이트에 접속하면 로그인 된 것으로 나옴.

 

- 대응방법: 쿠키에 ip주소를 난독화해서 넣으면 검증을 할 수 있다.(어디서 접속했는지, 검증이 가능해서), 다른데 접속한 사람은 정상이 아니다. 라는 것을 인식시키게 된다. 요즘은 ip주소만 사용하는 것이 아니라 다양한 것들을 비교한다.

 

실습1) XSS(reflected)

DVWAXSS Reflected(사용자가 입력한 값을 그대로 실행시켜서 사용자에게 보여준다.)

reflected?

 

 

<script>alert(‘hinamnor’)</script>

이 스크립트는 공격은 아니지만 이 스크립트가 실행된다면 공격용 스크립트도 실행된다.

실습할때는 간단하게 작성된 스크립트로 테스트를 함.

메모장에 작성한 후에 복붙하는 방식으로 여러번 테스트하는 것이 좋음.

 

1) Low

그냥 실행됨.

 

cf. 마크 주커버그(하버드 졸업사진 목록(facebook)을 해킹해서 다운로드 받았다. 그래서 퇴학)

 

2. medium

<script>alert(‘korea’)</script>를 넣으면, alert('korea‘) 이렇게만 나오고 script태그는 사라진다. 왜 이러한 현상이 발생할ᄁᆞ?

view source를 눌러보면, str_replace()함수가 <script>Null로 치환하고 있음. 그래서 <script>가 사라진다. 이를 우회하려면 어떻게 해야하는가?

힌트) 소문자 스크립트를 null로 치환한 상태이다.

대문자로 써보면 <SCRIPT>alert(‘korea’)</script>를 하면 된다 소문자만 필터링하기 때문에 대문자는 필터링이 안된다.

alert(\‘typoon\’)라고 나옴...

View source를 보면? message부분은 secure coding 3중 방어를 하고 있음.

 

방법 1) <SCRIPT> alert(‘hinamnor’) </script> //소문자 script만 필터링하기 때문에 대문자로 변경

방법 2) <Script> alert(‘hinamnor’) <script>

방법 3) <ScRiPt> alert(‘hinamnor’) <script> //대소문자 섞어서 사용하기

대소문자가 번갈아가며 들어가는 경우가 있는데, 필터링을 하기 위해서(우회하기 위해서) 이런 식으로 섞어서 사용한다.

방법 4) <script img=x> alert(‘korea’) </script> // 불필요한 속성을 추가한다.

방법 5) <script > alert(‘korea’) </script> //굳이 속성을 넣지 않아도 되는 경우도 있다. 속성을 넣는 것이 중요한게 아니라, scriept뒤에 공백이 있었는데 스크립트가 잘 실행되었따. 그러면 굳이 이 태그를 속성으로 추가할 필요가 없다. 그래서 공백만 넣어도 가능하다. 태그는 속성을 추가할 수 있기 때문에 공백이 구분자 역할을 한다.

방법 6) <scr<script>ipt> alert(‘korea’) </script> //스크립트 태그를 중첩해서 사용하는 방법, 이렇게 하면 str_replace()함수가 null로 치환하려고 하는데, nill로 치환을 했더니 script가 남으니ᄁᆞ 정상적으로 동작이 된다.

방법 7) <img src=javascript(alert(‘korea’));’> // 이미지 태그에서는 실행이 안됨.

 

str_replace()함수와 같은 대응방법이 잘못됨. 치환방법을 사용하는 것은 우회할 수 있는 방법이 많이 있다. 결론은 치환방법은 좋은 것이 아니다.

script가 있다. 중간중간에 (.*)가 있다는 것은 중간에 뭐가 들어갔어도 스크립트라는 것이 보이기만 하면 된다. 그리고 맨 뒤에 /i는 대소문자를 구별하지 말라는 의미. 그래서 어쨌든 script가 시작이 된다. <>는 시작 태그, script가 들어가면 null로 치환한다. preg(regular expression, 정규표현식)

$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );

I는 대소문자 구별을 하지 않고, 이러한 것들을 Null로 치환을 한다.

제일 좋은 방법은 impossible

 

 

$name = htmlspecialchars( $_GET[ 'name' ] );

html~...함수는 securecoding함수인데, 입력 값을 다 검증을 해야 한다. 어ᄄᅠᇂ게 하냐면 html태그로 변환을 한다. 어떤 값을 넣어도 html로 변환해서 화면은 정상적으로 보이지만, 스크립트 태그가 보이지 않는다. 치환 방법은 많이 있기 때문에 ...

가장 적절한 대응 방법은 Secure coding함수를 적용해야 한다. 대표적인 함수그 htmlspecialchars() 함수: html태그로 변환해주는 함수. < &lt; 로 변환하고 >&gt;으로 변환해 줌, &&emp;로 변환한다. “&quot; 로 변환, ‘&#039; 로 변환한다.

 

 

웹 브라우저를 통해서 볼 때는 정상적으로 보이지만, 실행하지는 않음.(html태그로 변환하는 사이트)

참고)

https://www.php.net/manual/en/function.htmlspecialchars.php 를 참고하자.

 

이를 이용하면 웹 브라우저를 통해서 사용자에게는 정상적으로 보이지만, 실행하지는 않음.

 

DVWA_stored

- 스크립트를 DB에 저장했다가 방문자의 웹 브라우저에서 동작하도록 만드는 방식

- 게시판, 방명록 등에 스크립트가 저장되는 방식: 이러면 사람들이 방문할때마다 걸려든다. 그래서 STORED가 더 위험하다.

- F12를 눌러서 개발자모드에서 maxlength=10이었는데 10000으로 늘려서 변형된 스크립트를 넣으면 된다.

<low>

 

 

 

 

 

 

 

 

<medium>

view secure을 보면, 메시지 부분은 secure coding 3중 방어를 하고 있다. 그러나 name부분을 보니 치환을 하고 있다. 그래서 위의 변형된 것들을 하면 된다.

그러나 10글자밖에 들어가지지 않는다....이는 서버에서 막는 것이 아니라 클라이언트에서 차단을 하고 있는 것이다.(클라이언트에서 입력을 제한하고 있다.) 그래서 클라이언트에서 조작을 한다. F12

maxlegth를 조작하면 된다. 개발자 도구나 proxy를 사용하면 자주 풀린다.

 

 

proxy도구

- 서버와 클라이언트 사이에 존재하는 것

- 서버에게는 클라이언트인척하고, 클라이언트에게는 서버인척 한다.(중간역할을 하고 있는)

- 서버쪽에 가ᄁᆞ우면 서버에 부담을 덜어주는 역할

- 인터넷에 있으면 클라이언트에의 ip주소를 숨겨주는(우회해주는) 역할

- 클라이언트에 가ᄁᆞ이 있으면 방화벽의 역할 또는 http요청을 조작할 수 있다.

- 대표적인 도구: Burp suit, Paros Proxy(소스코드가 공개돼서 customizing이 가능하다. 그래서 옛날에 kt해킹사건에 사용됨), charley, Fiddler2(Fiddler버전2 상태에서 팔았다.), acilles등등

 

Burp suite

- Burp는 트림이라는 뜻인데, 서버 쪽으로 들어가기 전에 트래픽을 잡는다. 라는 느낌이라서 트림이라고 하였다. Suite(스위트)는 여러개를 붙여놓았다는 의미 ex) 호텔 스위트룸: suite room(침실, 거실, 욕실, 화장실, 서재 등)

 

 

원래는 웹 브라우저에서 웹 서버로 바로 가야하는데, proxy(8080포트)로 들어갔다가 프록시에서 웹 서버로 간다. 웹 서버로 가도록 세팅한다.

<원래 경로>

 

 

<프록시 설치 후 경로>

<순서>

1. 인터넷 속성 > 연결 > lan설정 > 주소에다가 127.0.0.1을 넣고, 포트번호는 8080 > 사용자 lan에 프록시~ 여기 체크 > 확인

// 웹 브라우저에서 모든 트래픽이 burp suite를 들렀다 간다. 127.0.0.1이라는 것은 자기 자신을 의미한다. 내 컴퓨터 안에 있는 다른 어플리케이션을 들렀다가 가라 라는 의미.

 

 

2. 이제부터 dvwa에서 입력한 값이 proxy를 거쳐서 가게 된다. intercept on으로 바꾼다. 그러면 dvwa에서 했던 요청이 proxy에 걸린다. 이러한 요청을 웹 서버로 보내기 위해서는 forward를 눌러줘야 한다.

3. mediumname부분에 공격이 가능하니ᄁᆞ, name부분을 지우고, 변형된 스크립트를 넣는다. <script >

alert(‘korea’)</script>

실습) client의 요청을 proxy에서 수정해서 보내기

Burp Suite에서 proxy메뉴를 누르고 intercept on 상태로 변경

이름에 abcde, 내용은 12345를 넣고 Sign Guestbook 클릭 Burp Suiteintercept.

abcde를 지우고 변형된 스크립트를 넣는다 <script >alert(‘typoon’)</script>

forward를 클릭 interceptoff로 변경

스크립트가 정상적으로 실행되면 alert창이 뜬다.

 

프록시는 클라이언트에게 서버인척하고 서버에게는 클라이언트인척 한다.

 

개발자 도구를 이용해서 글자수 제한을 풀고 스크립트를 작성하는 것과 proxy를 사용해서스크립트를 작성하는 것과 차이점: 글자수 제한은 브라우저의 스크립트가 하고 있다. proxy에서는 이미 나왔으니 proxy에서는 글자수 제한이 걸릴 리가 없다. ex) 엄마가 집에서 밥먹을떄는 밥먹고 물마셔라 라고 제한을 두었는데 외출해서 그 제한을 지킬 필요가 없듯이...

 

프록시가 걸린 상태에서는 네이버, 구글 같은 인터넷 사용이 불가능하다. 인증서를 가져올 수 없기 때문인데, 왜 인증서를 가져올 수 없냐면 proxy도구의 특징은 중간에 끼어들어서 서버한테는 클라이언트인척하고 클라이언트에게는 서버인척 한다. 그래서 인증서 오류가 뜬다.

아에 네이버, 다음, 구글은 접속이 안된다.

 

실습이 끝난 후 에는 돋보기 창에서 인터넷 옵션을 검색해서 프록시를 꺼줘야 한다.

 

모의 해킹 및 실제 해킹 상황에서

문제 1/4F12(개발자도구) 또는 PROXY도구로 풀림

 

프록시는 일반 회사들이 방화벽으로 사용한다.

회사들이 자기네 회사 내부망에서 프록시를 거쳐나가게 구성.

인터넷에서 보면은, 프록시를 제공하는 경우가 있는데 이를 거쳐가는 경우가 있다. 프록시가 만약에 필리핀에 있다면 웹 서버는 독일이고, 브라우저는 한국이다. 그러면 한국에서 필리핀에 있는 프록시를 거쳐가면 독일의 웹 서버는 필리핀에서 온 것으로 인식한다. 그래서 한국에서 온 것이라고 전혀 알 수 없음.

프록시라는 것을 방화벽에서 채택할 경우에 이런 식으로 동작을 한다.

 

난독화

- 원래는 개발자들이 내부정보를 숨기기 위한 목적으로 사용

공격자들이 자신이 만든 스크립트의 내용을 숨기기 위한 목적으로 난독화를 사용한다.

DBD를 위한 스크립트의 경우에는 악성 코드가 있는 그 서버의 URL, IP주소, 악성코드의 이름 등이 들어있음. 이러한 것들이 들어 있으면 보안 담당자들이 저쪽에서 악성 코드가 날라오네, 저쪽 IP를 막아야겠네? 생각을 한다. 그래서 그쪽의 악성코드를 차단하려는 설정을 한다. 어떻게 차단? IP주소/URL 같은 것이 나오면 방화벽에 방문 금지 목록에다가 추가한다. (블랙리스트) 그러면 우리 회사 직원들이 저 사이트를 방문하지 않는다. (악성코드 유포지) 이러한 난독화를 공격자들은 필수적으로 사용할 수 밖에 없다. 그래서 공격자들이 URL, IP주소, 악성코드 이름 등을 숨기기 위한 목적으로 난독화를 사용한다.

- 원인? 경제위기로 인해서 공격자들이 자신이 만든 script를 숨기기위한 목적으로 난독화를 사용한다.

- 난독화는 생소한 인코딩에 복잡한 함수를 포함. 이를 사람은 못읽는데, 웹 브라우저는 이를 읽을 수 있다. 만약에 웹 브라우저가 못 읽으면 문제가 되지 않는다. 그런데 웹 브라우저가 읽은 다음에, 악성코드 유포지에서 악성코드를 가져오게 된다. 그래서 문제가 된다.

 

- 난독화에 사용되는 함수: unescape(), eval(), String.fromCharCode() scc대문자

그림 설명: 테스트라는 문자열이 있는데, 이 테스트라고 하는 문자를 만약에 못쓰게 막았다. 그러면 test를 보낼 수 없다. 그럴때는 String.fromCharCode() 를 사용해서test라는 문자를 10진수로 변경한다. 그럼 t=116, e=101, s=115, t=116 그래서 test가 된다. 하지만 여기서는 어디서도 test에서는 쓰이지 않아서 통과되지만, 이를 사용하면 test라는 문자열이 나오게 된다.

 

인코딩: 컴퓨터와 사람이 있는데, 컴퓨터는 프로그래밍 언어를 사용하고 사람은 자연어를 사용한다. 컴퓨터가 이해하기 쉽도록 변환하는 것이고

디코딩: 사람이 이해하기 쉽도록 변환하는 것

 

아스키(7비트): 대문자, 소문자, 숫자. 특수문자, 컴퓨터의 기능을 하는 것들을 표시하기 위한 언어

 

미국 사람뿐만 아니라 다른 나라도 컴퓨터를 사용해야 하기 때문에 유니코드를 만들었다. (16bit=65536)

 

 

 

 

<한글을 표시하는 방법>

EUC-kr: MS 윈도우에서 사용하는 한글 인코딩(완성형 발전된 형태)

마이크로 소프트에서 만들어 줌. (윈도우에서는 이것을 사용)

UTF-8: , 데이터 베이스, 리눅스 등에서 한글 인코딩(조합형의 발전된 형태)

한국에서 만듦(인터넷에서는 이것을 사용)

EUC-kr로 쓰고 utf-8로 읽으면 한글이 깨진다.

 

base64의 특징

64진법, 26, 2비트가 3개씩 사용된다. 이메일 같은 것을 보내면 base64가 사용되어 진다. 이메일에서 mime이라는 방식, 항상 3자리 단위로 처리하다 보니, 자리수가 모자르면 패딩(=)을 사용한다. 패딩이 안쓰였단 것은 3자리가 딱 맞아 떨어짐. 표현할때는 대소문자를 활용해서 문자를 표현한다.

- 원문보다 인코딩후에 약 1.4배 정도의 크기로 증가하게 됨.

- 문자를 3,6,9단위로 맞추기 떄문에 모자라는 글자는 =을 추가하게 된다.

- 3,6,9는 패딩을 사용하지 않음.

- 2,5,8은 패딩(=)1개 사용

- 1,4,7은 패딩(=)2개 사용

<base64로 인코딩/ 디코딩하는 사이트>

https://www.base64decode.org/

 

ex) 7YOc7ZKN7Jio64ukCg==

특징: 대문자, 소문자, 숫자와 /, = 여기는 369처럼 3단위로 맞아 떨어지지 않아서 패딩이 사용됨. 특수 문자는 많이 사용되지 않는다. base64로 인코딩하면 원문보다 1.4배 정도 크기가 증가한다. 사이즈가 늘어남. (띄어쓰기 무시함)

 

16진수(Hex, hexa decimal)

- 구분자로 주로 사용하는 것이 %를 사용

- 162^4라서 4bit, 4bit를 두 개로 묶으면 8bit가 되는데, 8bit1byte라고 한다. 이를 Octet라고 한다.

- %(구분자)1byte단위로 사용하니까 %hexhex 패턴을 사용 ex) %0D

- 구분자로 \x를 사용하기도 한다. ex) \x(의미가 없다)0D\x(의미없다)D8

 

ucs(universal(미국 외 국가) character set, 범용 문자 집합): ucs216비트를 사용하므로 4자리 단위로 표현 ex) \x09AE, %u1a3c

(%u를 구분자로 사용하기도 한다.)

정리: 구분자로 %, %u, \x 등이 사용된다.

 

실습2) 인코딩 해석하기

1. bluebell_decode.exe 다운로드하기

 

 

확장자 바꿔도 그대로면 보기 > 파일 확장명 체크

2. 문제1)

3. 문제2)

4. 문제3)

위의 게시물에서 \x는 단순 구분자일 뿐이고, 제외하고 나면 hex가 남음. hex를 아스키 또는 utf-8로 바꾸면 내용을 알 수 있게 됨.

한글은 유니코드나 url(euc-kr)로 해야한다.

 

한글로 하면 아스키를 변환해야하지만 영어로 하면 변환할 필요가 없다.

ex) 힌남노를 한글로 했을때와 영어로 했을 때

* 영어버전:

https://search.naver.com/search.naver?where=nexearch&query=hinamno&sm=tab_org&qvt=0

 

한글버전(utf-8로 변환됨):

https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%ED%9E%8C%EB%82%A8%EB%85%B8&oquery=hinamno&tqi=hxTgCwprvxZsscGvpw8ssssstzh-310840

 

힌남노를 한글로 보내면 utf-8로 변환하지만, hinamnor로 보내면 ASCII로 전달됨. 그래서 바꿀 필요가 없다.

 

아스키를 HEX로 변환하는 방식

유니코드의 맨 앞에는 아스키가 들어 있다. 공백 대신에 한칸씩 띄우는 것을 +로 표현함.

 

 

 

 

 

 

 

공백 대신에 한칸씩 띄어주는 것을 + 로 나눴을 뿐

 

스크립트를 넣어서 ALERT를 띄우는 공격을 해봤는데, 제일 바보같은 것이 script라는 문자를 null로 치환하는 방법이었다. 치환이 잘 안되면 치환을 우회하거나 그러면 스크립트가 실행되는 문제가 잇었다. 이를 해결하기 위해서 <, >를 막는 것이다. 이를 막으면 공격자들이 <>를 사용할 수 없게 된다. 이는 스크립트를 시작하는 부분이고, 그래서 utf-7을 이용해서 +ADw-,+AD4-로 바꾸어 사용하면 정상적으로 실행된다. 물론 앞에 utf-7을 사용할 것이라고 선언을 해줘야 한다. 그리고 나면 script태그 대신에

+ADw-script+AD4-alert("Just what do you think you're doing")+ADw-/script+AD4-

이러한 방식으로 바꿔치게 된다. 이러면 스크립트가 동작을 하게 된다.

 

UTF-7html로 만들어서 실행시키면

- Chrome이나 edge는 코드가 그대로 보임 실행 안됨.

- internet explorer에서는 경고창이 뜨고 승인하면 실행됨.

 

이를 통해서 알 수 있는 문제점: 웹 브라우저에서 이를 다 해석해준다. 이를 다 해석해서 <><>해서 다 동작을 시킨다. 말이 안됨. 사용자가 이런 코드를 알지 못하고 <>를 못쓰게 해놨더니 utf-7을 해석하게 된다.

 

악성코드 분석 방법

- 정적 분석: 소스코드, 외형, 사용했던 함수 특징 등을 보고 악의적인 행위를 하는지 예상

- 동적 분석: 실제 악성 코드를 실행한 다음 악의적인 행위를 행위를 하는지 확인

 

 

실습3) mazila 다운로드 하기 (난독화 해제)

<문제1>

malzila : 난독화를 해제해주는 도구

1. 해당 부분만 블록 설정을 한다. 스크립트 태그는 복사하지 않는다.

이런 사이트 주소가 나온다. 저 사이트는 블랙리스트 시켜서 회사 직원들이 방문하지 않도록 하는 것. (피싱사이트)

 

 

<문제2>

eval은 뒤에 함수 기능들을 동작시키는 것. 실제로 동작이 된다. 그런데 malzila는 웹 브라우저는 아니지만, 실제로 웹 사이트에 방문하면 위험하다. 그러한 문제 때문에 evla로 바꿔치기 한다.

 

이러면 평문으로 바뀌고 악성코드 유포지 사이트가 보이게 된다.

<문제3>

다 잘라서“”붙인 다음에 + 로 연결을 시켜둠.

concatenate기능: 잘라 놓은 것을 이어붙인다.

구분자: %u가 들어있고 hex4개씩 들어있다. (ucs2) 이를, hex로 바꾸고 ascii로 바꾼다. 아무리 복잡한 인코딩을 쓰더라도 무조건 hex로 만들어서 이를 ascii로 만들면 끝난다.

%u가 다 ᄈᆞ지게 된다.

ᄄᆞ옴표를 제외하고 복사해서 메뉴에 HEX VIEW > paste as hex >

 

구분자로 쓸 수 있는 것(ucs2): %, %u, %x

* ucs2 hex ascii로 변환한다.

 

난독화를 해제하는 방법

- 최대한 정리를 해서(전처리 해서) hex로 변환하고 hexAXCII(또는 UTF-8)로 변환하면 내용이 보임. hex는 컴퓨터가 보기 편리하고 ascii는 사람이 보기 편리하다.

 

 

실습4) Mal.js라는 파일에 숨어있는 비밀 내용은 무엇일ᄁᆞ요?

notepad++로 열어봐야 한다.(아니면 메모장으로 열어야 함.)

 

2. 안에 글자들만으로 문제를 풀 수 없고 함수들을 이용해야 한다. 일단 전체를 복사한 다음에

3. malzila에 와서 디코더탭에 붙여넣기를 한다.

4. 복사해서 hexview > paste as hex > 해당 부분 복사해서 copy selection as text > bluebell_decoder.exe> 붙여넣기해서 base64

 

 

난독화

- 공격 스크립트의 약 90%은 난독화를 이용하는 것이 특징

요즘에 스크립트로 공격하는 경우에는 90% 이상은 난독화를 이용한다. 평문 스크립트로 공격할 일은 없다. 초보자들 뺴고는 거의다 난독화를 사용한다.

 

실습5) qr코드로 스크립트를 실행시킨다면?

스마트폰 사용자가 일반 pc사용자보다 훨씬 많다. 그래서 스마트폰 사용자가 웹을 이용하는 비율이 훨신 많아졌는데, qr코드를 찍는 경우에 만약 나쁜 사람이 스크립트를 나쁜 목적으로 만들고, 스크립트를 가지고 qr코드를 만든다. 이를 나눠주는데, qr코드를 찍으면 악성 앱이 다운로드 받아지거나(모바일은 이것만 가능), 링크를 주거나 피싱 사이트로 가게 된다.

 

만약 qr코드가 담긴 전단지를 회사 앞에서 나눠주는데, qr를 찍는 순간 앱을 설치하라고 한다. 이 앱을 설치하면 이 앱이 스마트폰에서 하는 일을 컨트롤할 수 없다. 주소로 다 복사해서 인터넷으로 보내고 문제 메시지 복사해서 인터넷으로 보내고 해도 말릴 수 없다. 이게 해킹앱인데, 이를 다운로드 받을 수 있게 하는 것, 사람이 볼 수는 없지만 스마트폰은 인식을 해서 동작을 하게 된다. 난독화와 차이가 없다. 그래서 굉장히 위험.

 

 

z인덱스란 일종의 레이어로 숫자가 크면 위에 배치되고 이러한 이미지들을 자기네 홈페이지 앞에 뜨게 된다. 그래서 아침에 출근하면 홈페이지에서 맨 앞에 심각한 그림들이 올라와있게 된다. 이처럼 z인덱스값이 커지면 화면 앞을 가리는 상태가 된다. 이를 deface라고 한다.

 

Deface: 얼굴을 제거한다. 망신을 준다는 의미

비슷한 표현) 면목이 없습니다. (: face, : eye)

 

Deface공격: 웹 사이트의 첫 페이지를 바꾸는 공격

이미 해킹이 다 되어있는 상태에서 D-Day에 이미지만 바꾸는 것

 

 

 

 

 

 

 

웹 보안의 이슈

- 사진, 텍스트, 링크

- 회원가입, 장바구니, 게시판 글쓰기, 파일 업로드, 동영상 업로드, 실시간 채팅, 화상회의 등등 수 많은 기능을 www환경에서 실행

- 다양한 부분에서 취약점 등이 발생하는 문제

 

SQL인젝선

- SQL문의 조건절을 참이 되도록 만들어서 공격자가 의도하는 결과를 만들어내는 공격

- ex) 공격 종류: login bypass(로그인 우회), DB에 있는 정보를 획득/ 조작 등등

 

XSS(cross site scripting)

- 스크립트를 활용한 공격

- 스크립트는 공격자가 작성하기 나름이기 때문에 다양한 공격이 가능하다.

- 최근에 가장 많은 공격이 발생하는 것은 악성코드를 자연스럽게 다운로드 하도록 유도(Drive by Download: DBD)

 

DBD공격 유형(최근에 가장 많음)

- 이 스크립트를 통해서 다운로드 하도록 유도하는 것

- 스크립트 자체는 악성코드가 아님 악성 행위가 없어서 보안 솔루션에 잘 탐지디지 않음. 그래서 정상 동작을 하게 된다.

- 스크립트는 악성코드를 다운로드하게 한 다음에(보안 솔루션이라고 속이고 다운로드를 유도한다.) 사용자를 속여서 마우스 클릭을 유도한다. 그러면 악성코드가 실행되면 랜섬웨어, 트로이목마가 동작하게 된다.

 

쿠키값을 훔치는 방법(최근에는 잘 안함)

- 쿠키는 사용자의 신분증인데, 이를 방문자의 웹 브라우저가 스크립트가 있는 페이지를 방문하면 스크립트는 쿠키를 공격자의 컴퓨터 쪽으로 보낸다. 그러면 공격자는 자신의 쿠키를 지우고 훔친 쿠키로 바꾼다. 이러고 해당 웹 사이트에 접속하면 로그인 된 것으로 나옴.

 

- 대응방법: 쿠키에 ip주소를 난독화해서 넣으면 검증을 할 수 있다.(어디서 접속했는지, 검증이 가능해서), 다른데 접속한 사람은 정상이 아니다. 라는 것을 인식시키게 된다. 요즘은 ip주소만 사용하는 것이 아니라 다양한 것들을 비교한다.

 

실습1) XSS(reflected)

DVWAXSS Reflected(사용자가 입력한 값을 그대로 실행시켜서 사용자에게 보여준다.)

reflected?

 

 

<script>alert(‘hinamnor’)</script>

이 스크립트는 공격은 아니지만 이 스크립트가 실행된다면 공격용 스크립트도 실행된다.

실습할때는 간단하게 작성된 스크립트로 테스트를 함.

메모장에 작성한 후에 복붙하는 방식으로 여러번 테스트하는 것이 좋음.

 

1) Low

그냥 실행됨.

 

cf. 마크 주커버그(하버드 졸업사진 목록(facebook)을 해킹해서 다운로드 받았다. 그래서 퇴학)

 

2. medium

<script>alert(‘korea’)</script>를 넣으면, alert('korea‘) 이렇게만 나오고 script태그는 사라진다. 왜 이러한 현상이 발생할ᄁᆞ?

view source를 눌러보면, str_replace()함수가 <script>Null로 치환하고 있음. 그래서 <script>가 사라진다. 이를 우회하려면 어떻게 해야하는가?

힌트) 소문자 스크립트를 null로 치환한 상태이다.

대문자로 써보면 <SCRIPT>alert(‘korea’)</script>를 하면 된다 소문자만 필터링하기 때문에 대문자는 필터링이 안된다.

 

alert(\‘typoon\’)라고 나옴...

View source를 보면? message부분은 secure coding 3중 방어를 하고 있음.

 

방법 1) <SCRIPT> alert(‘hinamnor’) </script> //소문자 script만 필터링하기 때문에 대문자로 변경

방법 2) <Script> alert(‘hinamnor’) <script>

방법 3) <ScRiPt> alert(‘hinamnor’) <script> //대소문자 섞어서 사용하기

대소문자가 번갈아가며 들어가는 경우가 있는데, 필터링을 하기 위해서(우회하기 위해서) 이런 식으로 섞어서 사용한다.

방법 4) <script img=x> alert(‘korea’) </script> // 불필요한 속성을 추가한다.

방법 5) <script > alert(‘korea’) </script> //굳이 속성을 넣지 않아도 되는 경우도 있다. 속성을 넣는 것이 중요한게 아니라, scriept뒤에 공백이 있었는데 스크립트가 잘 실행되었따. 그러면 굳이 이 태그를 속성으로 추가할 필요가 없다. 그래서 공백만 넣어도 가능하다. 태그는 속성을 추가할 수 있기 때문에 공백이 구분자 역할을 한다.

방법 6) <scr<script>ipt> alert(‘korea’) </script> //스크립트 태그를 중첩해서 사용하는 방법, 이렇게 하면 str_replace()함수가 null로 치환하려고 하는데, nill로 치환을 했더니 script가 남으니ᄁᆞ 정상적으로 동작이 된다.

방법 7) <img src=javascript(alert(‘korea’));’> // 이미지 태그에서는 실행이 안됨.

 

str_replace()함수와 같은 대응방법이 잘못됨. 치환방법을 사용하는 것은 우회할 수 있는 방법이 많이 있다. 결론은 치환방법은 좋은 것이 아니다.

script가 있다. 중간중간에 (.*)가 있다는 것은 중간에 뭐가 들어갔어도 스크립트라는 것이 보이기만 하면 된다. 그리고 맨 뒤에 /i는 대소문자를 구별하지 말라는 의미. 그래서 어쨌든 script가 시작이 된다. <>는 시작 태그, script가 들어가면 null로 치환한다. preg(regular expression, 정규표현식)

$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );

I는 대소문자 구별을 하지 않고, 이러한 것들을 Null로 치환을 한다.

제일 좋은 방법은 impossible

 

 

 

$name = htmlspecialchars( $_GET[ 'name' ] );

html~...함수는 securecoding함수인데, 입력 값을 다 검증을 해야 한다. 어ᄄᅠᇂ게 하냐면 html태그로 변환을 한다. 어떤 값을 넣어도 html로 변환해서 화면은 정상적으로 보이지만, 스크립트 태그가 보이지 않는다. 치환 방법은 많이 있기 때문에 ...

가장 적절한 대응 방법은 Secure coding함수를 적용해야 한다. 대표적인 함수그 htmlspecialchars() 함수: html태그로 변환해주는 함수. < &lt; 로 변환하고 >&gt;으로 변환해 줌, &&emp;로 변환한다. “&quot; 로 변환, ‘&#039; 로 변환한다.

 

 

웹 브라우저를 통해서 볼 때는 정상적으로 보이지만, 실행하지는 않음.(html태그로 변환하는 사이트)

참고)

https://www.php.net/manual/en/function.htmlspecialchars.php 를 참고하자.

 

이를 이용하면 웹 브라우저를 통해서 사용자에게는 정상적으로 보이지만, 실행하지는 않음.

 

DVWA_stored

- 스크립트를 DB에 저장했다가 방문자의 웹 브라우저에서 동작하도록 만드는 방식

- 게시판, 방명록 등에 스크립트가 저장되는 방식: 이러면 사람들이 방문할때마다 걸려든다. 그래서 STORED가 더 위험하다.

- F12를 눌러서 개발자모드에서 maxlength=10이었는데 10000으로 늘려서 변형된 스크립트를 넣으면 된다.

<low>

 

 

 

 

 

 

 

 

 

 

<medium>

view secure을 보면, 메시지 부분은 secure coding 3중 방어를 하고 있다. 그러나 name부분을 보니 치환을 하고 있다. 그래서 위의 변형된 것들을 하면 된다.

그러나 10글자밖에 들어가지지 않는다....이는 서버에서 막는 것이 아니라 클라이언트에서 차단을 하고 있는 것이다.(클라이언트에서 입력을 제한하고 있다.) 그래서 클라이언트에서 조작을 한다. F12

 

maxlegth를 조작하면 된다. 개발자 도구나 proxy를 사용하면 자주 풀린다.

 

 

proxy도구

- 서버와 클라이언트 사이에 존재하는 것

- 서버에게는 클라이언트인척하고, 클라이언트에게는 서버인척 한다.(중간역할을 하고 있는)

- 서버쪽에 가ᄁᆞ우면 서버에 부담을 덜어주는 역할

- 인터넷에 있으면 클라이언트에의 ip주소를 숨겨주는(우회해주는) 역할

- 클라이언트에 가ᄁᆞ이 있으면 방화벽의 역할 또는 http요청을 조작할 수 있다.

- 대표적인 도구: Burp suit, Paros Proxy(소스코드가 공개돼서 customizing이 가능하다. 그래서 옛날에 kt해킹사건에 사용됨), charley, Fiddler2(Fiddler버전2 상태에서 팔았다.), acilles등등

 

Burp suite

- Burp는 트림이라는 뜻인데, 서버 쪽으로 들어가기 전에 트래픽을 잡는다. 라는 느낌이라서 트림이라고 하였다. Suite(스위트)는 여러개를 붙여놓았다는 의미 ex) 호텔 스위트룸: suite room(침실, 거실, 욕실, 화장실, 서재 등)

 

 

원래는 웹 브라우저에서 웹 서버로 바로 가야하는데, proxy(8080포트)로 들어갔다가 프록시에서 웹 서버로 간다. 웹 서버로 가도록 세팅한다.

<원래 경로>

 

 

 

 

 

 

 

 

<프록시 설치 후 경로>

 

<순서>

1. 인터넷 속성 > 연결 > lan설정 > 주소에다가 127.0.0.1을 넣고, 포트번호는 8080 > 사용자 lan에 프록시~ 여기 체크 > 확인

// 웹 브라우저에서 모든 트래픽이 burp suite를 들렀다 간다. 127.0.0.1이라는 것은 자기 자신을 의미한다. 내 컴퓨터 안에 있는 다른 어플리케이션을 들렀다가 가라 라는 의미.

 

 

 

 

 

 

2. 이제부터 dvwa에서 입력한 값이 proxy를 거쳐서 가게 된다. intercept on으로 바꾼다. 그러면 dvwa에서 했던 요청이 proxy에 걸린다. 이러한 요청을 웹 서버로 보내기 위해서는 forward를 눌러줘야 한다.

 

3. mediumname부분에 공격이 가능하니ᄁᆞ, name부분을 지우고, 변형된 스크립트를 넣는다. <script >

alert(‘korea’)</script>

 

실습) client의 요청을 proxy에서 수정해서 보내기

Burp Suite에서 proxy메뉴를 누르고 intercept on 상태로 변경

이름에 abcde, 내용은 12345를 넣고 Sign Guestbook 클릭 Burp Suiteintercept.

abcde를 지우고 변형된 스크립트를 넣는다 <script >alert(‘typoon’)</script>

forward를 클릭 interceptoff로 변경

스크립트가 정상적으로 실행되면 alert창이 뜬다.

 

프록시는 클라이언트에게 서버인척하고 서버에게는 클라이언트인척 한다.

 

개발자 도구를 이용해서 글자수 제한을 풀고 스크립트를 작성하는 것과 proxy를 사용해서스크립트를 작성하는 것과 차이점: 글자수 제한은 브라우저의 스크립트가 하고 있다. proxy에서는 이미 나왔으니 proxy에서는 글자수 제한이 걸릴 리가 없다. ex) 엄마가 집에서 밥먹을떄는 밥먹고 물마셔라 라고 제한을 두었는데 외출해서 그 제한을 지킬 필요가 없듯이...

 

프록시가 걸린 상태에서는 네이버, 구글 같은 인터넷 사용이 불가능하다. 인증서를 가져올 수 없기 때문인데, 왜 인증서를 가져올 수 없냐면 proxy도구의 특징은 중간에 끼어들어서 서버한테는 클라이언트인척하고 클라이언트에게는 서버인척 한다. 그래서 인증서 오류가 뜬다.

아에 네이버, 다음, 구글은 접속이 안된다.

 

실습이 끝난 후 에는 돋보기 창에서 인터넷 옵션을 검색해서 프록시를 꺼줘야 한다.

 

모의 해킹 및 실제 해킹 상황에서

문제 1/4F12(개발자도구) 또는 PROXY도구로 풀림

 

프록시는 일반 회사들이 방화벽으로 사용한다.

회사들이 자기네 회사 내부망에서 프록시를 거쳐나가게 구성.

 

 

인터넷에서 보면은, 프록시를 제공하는 경우가 있는데 이를 거쳐가는 경우가 있다. 프록시가 만약에 필리핀에 있다면 웹 서버는 독일이고, 브라우저는 한국이다. 그러면 한국에서 필리핀에 있는 프록시를 거쳐가면 독일의 웹 서버는 필리핀에서 온 것으로 인식한다. 그래서 한국에서 온 것이라고 전혀 알 수 없음.

프록시라는 것을 방화벽에서 채택할 경우에 이런 식으로 동작을 한다.

 

난독화

- 원래는 개발자들이 내부정보를 숨기기 위한 목적으로 사용

공격자들이 자신이 만든 스크립트의 내용을 숨기기 위한 목적으로 난독화를 사용한다.

DBD를 위한 스크립트의 경우에는 악성 코드가 있는 그 서버의 URL, IP주소, 악성코드의 이름 등이 들어있음. 이러한 것들이 들어 있으면 보안 담당자들이 저쪽에서 악성 코드가 날라오네, 저쪽 IP를 막아야겠네? 생각을 한다. 그래서 그쪽의 악성코드를 차단하려는 설정을 한다. 어떻게 차단? IP주소/URL 같은 것이 나오면 방화벽에 방문 금지 목록에다가 추가한다. (블랙리스트) 그러면 우리 회사 직원들이 저 사이트를 방문하지 않는다. (악성코드 유포지) 이러한 난독화를 공격자들은 필수적으로 사용할 수 밖에 없다. 그래서 공격자들이 URL, IP주소, 악성코드 이름 등을 숨기기 위한 목적으로 난독화를 사용한다.

- 원인? 경제위기로 인해서 공격자들이 자신이 만든 script를 숨기기위한 목적으로 난독화를 사용한다.

- 난독화는 생소한 인코딩에 복잡한 함수를 포함. 이를 사람은 못읽는데, 웹 브라우저는 이를 읽을 수 있다. 만약에 웹 브라우저가 못 읽으면 문제가 되지 않는다. 그런데 웹 브라우저가 읽은 다음에, 악성코드 유포지에서 악성코드를 가져오게 된다. 그래서 문제가 된다.

 

- 난독화에 사용되는 함수: unescape(), eval(), String.fromCharCode() scc대문자

그림 설명: 테스트라는 문자열이 있는데, 이 테스트라고 하는 문자를 만약에 못쓰게 막았다. 그러면 test를 보낼 수 없다. 그럴때는 String.fromCharCode() 를 사용해서test라는 문자를 10진수로 변경한다. 그럼 t=116, e=101, s=115, t=116 그래서 test가 된다. 하지만 여기서는 어디서도 test에서는 쓰이지 않아서 통과되지만, 이를 사용하면 test라는 문자열이 나오게 된다.

 

인코딩: 컴퓨터와 사람이 있는데, 컴퓨터는 프로그래밍 언어를 사용하고 사람은 자연어를 사용한다. 컴퓨터가 이해하기 쉽도록 변환하는 것이고

디코딩: 사람이 이해하기 쉽도록 변환하는 것

 

아스키(7비트): 대문자, 소문자, 숫자. 특수문자, 컴퓨터의 기능을 하는 것들을 표시하기 위한 언어

 

미국 사람뿐만 아니라 다른 나라도 컴퓨터를 사용해야 하기 때문에 유니코드를 만들었다. (16bit=65536)

 

 

 

 

 

<한글을 표시하는 방법>

EUC-kr: MS 윈도우에서 사용하는 한글 인코딩(완성형 발전된 형태)

마이크로 소프트에서 만들어 줌. (윈도우에서는 이것을 사용)

UTF-8: , 데이터 베이스, 리눅스 등에서 한글 인코딩(조합형의 발전된 형태)

한국에서 만듦(인터넷에서는 이것을 사용)

EUC-kr로 쓰고 utf-8로 읽으면 한글이 깨진다.

 

base64의 특징

64진법, 26, 2비트가 3개씩 사용된다. 이메일 같은 것을 보내면 base64가 사용되어 진다. 이메일에서 mime이라는 방식, 항상 3자리 단위로 처리하다 보니, 자리수가 모자르면 패딩(=)을 사용한다. 패딩이 안쓰였단 것은 3자리가 딱 맞아 떨어짐. 표현할때는 대소문자를 활용해서 문자를 표현한다.

- 원문보다 인코딩후에 약 1.4배 정도의 크기로 증가하게 됨.

- 문자를 3,6,9단위로 맞추기 떄문에 모자라는 글자는 =을 추가하게 된다.

- 3,6,9는 패딩을 사용하지 않음.

- 2,5,8은 패딩(=)1개 사용

- 1,4,7은 패딩(=)2개 사용

<base64로 인코딩/ 디코딩하는 사이트>

https://www.base64decode.org/

 

ex) 7YOc7ZKN7Jio64ukCg==

특징: 대문자, 소문자, 숫자와 /, = 여기는 369처럼 3단위로 맞아 떨어지지 않아서 패딩이 사용됨. 특수 문자는 많이 사용되지 않는다. base64로 인코딩하면 원문보다 1.4배 정도 크기가 증가한다. 사이즈가 늘어남. (띄어쓰기 무시함)

 

16진수(Hex, hexa decimal)

- 구분자로 주로 사용하는 것이 %를 사용

- 162^4라서 4bit, 4bit를 두 개로 묶으면 8bit가 되는데, 8bit1byte라고 한다. 이를 Octet라고 한다.

- %(구분자)1byte단위로 사용하니까 %hexhex 패턴을 사용 ex) %0D

- 구분자로 \x를 사용하기도 한다. ex) \x(의미가 없다)0D\x(의미없다)D8

 

ucs(universal(미국 외 국가) character set, 범용 문자 집합): ucs216비트를 사용하므로 4자리 단위로 표현 ex) \x09AE, %u1a3c

(%u를 구분자로 사용하기도 한다.)

정리: 구분자로 %, %u, \x 등이 사용된다.

 

실습2) 인코딩 해석하기

1. bluebell_decode.exe 다운로드하기

확장자 바꿔도 그대로면 보기 > 파일 확장명 체크

2. 문제1)

 

3. 문제2)

 

4. 문제3)

 

위의 게시물에서 \x는 단순 구분자일 뿐이고, 제외하고 나면 hex가 남음. hex를 아스키 또는 utf-8로 바꾸면 내용을 알 수 있게 됨.

 

한글은 유니코드나 url(euc-kr)로 해야한다.

 

한글로 하면 아스키를 변환해야하지만 영어로 하면 변환할 필요가 없다.

ex) 힌남노를 한글로 했을때와 영어로 했을 때

* 영어버전:

https://search.naver.com/search.naver?where=nexearch&query=hinamno&sm=tab_org&qvt=0

 

한글버전(utf-8로 변환됨):

https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%ED%9E%8C%EB%82%A8%EB%85%B8&oquery=hinamno&tqi=hxTgCwprvxZsscGvpw8ssssstzh-310840

 

힌남노를 한글로 보내면 utf-8로 변환하지만, hinamnor로 보내면 ASCII로 전달됨. 그래서 바꿀 필요가 없다.

아스키를 HEX로 변환하는 방식

유니코드의 맨 앞에는 아스키가 들어 있다. 공백 대신에 한칸씩 띄우는 것을 +로 표현함.

 

 

 

 

 

 

 

 

공백 대신에 한칸씩 띄어주는 것을 + 로 나눴을 뿐

 

스크립트를 넣어서 ALERT를 띄우는 공격을 해봤는데, 제일 바보같은 것이 script라는 문자를 null로 치환하는 방법이었다. 치환이 잘 안되면 치환을 우회하거나 그러면 스크립트가 실행되는 문제가 잇었다. 이를 해결하기 위해서 <, >를 막는 것이다. 이를 막으면 공격자들이 <>를 사용할 수 없게 된다. 이는 스크립트를 시작하는 부분이고, 그래서 utf-7을 이용해서 +ADw-,+AD4-로 바꾸어 사용하면 정상적으로 실행된다. 물론 앞에 utf-7을 사용할 것이라고 선언을 해줘야 한다. 그리고 나면 script태그 대신에

+ADw-script+AD4-alert("Just what do you think you're doing")+ADw-/script+AD4-

이러한 방식으로 바꿔치게 된다. 이러면 스크립트가 동작을 하게 된다.

 

 

UTF-7html로 만들어서 실행시키면

- Chrome이나 edge는 코드가 그대로 보임 실행 안됨.

- internet explorer에서는 경고창이 뜨고 승인하면 실행됨.

 

이를 통해서 알 수 있는 문제점: 웹 브라우저에서 이를 다 해석해준다. 이를 다 해석해서 <><>해서 다 동작을 시킨다. 말이 안됨. 사용자가 이런 코드를 알지 못하고 <>를 못쓰게 해놨더니 utf-7을 해석하게 된다.

 

악성코드 분석 방법

- 정적 분석: 소스코드, 외형, 사용했던 함수 특징 등을 보고 악의적인 행위를 하는지 예상

- 동적 분석: 실제 악성 코드를 실행한 다음 악의적인 행위를 행위를 하는지 확인

 

 

실습3) mazila 다운로드 하기 (난독화 해제)

<문제1>

malzila : 난독화를 해제해주는 도구

1. 해당 부분만 블록 설정을 한다. 스크립트 태그는 복사하지 않는다.

이런 사이트 주소가 나온다. 저 사이트는 블랙리스트 시켜서 회사 직원들이 방문하지 않도록 하는 것. (피싱사이트)

 

 

 

 

 

 

 

 

<문제2>

eval은 뒤에 함수 기능들을 동작시키는 것. 실제로 동작이 된다. 그런데 malzila는 웹 브라우저는 아니지만, 실제로 웹 사이트에 방문하면 위험하다. 그러한 문제 때문에 evla로 바꿔치기 한다.

이러면 평문으로 바뀌고 악성코드 유포지 사이트가 보이게 된다.

 

 

<문제3>

다 잘라서“”붙인 다음에 + 로 연결을 시켜둠.

concatenate기능: 잘라 놓은 것을 이어붙인다.

구분자: %u가 들어있고 hex4개씩 들어있다. (ucs2) 이를, hex로 바꾸고 ascii로 바꾼다. 아무리 복잡한 인코딩을 쓰더라도 무조건 hex로 만들어서 이를 ascii로 만들면 끝난다.

%u가 다 ᄈᆞ지게 된다.

ᄄᆞ옴표를 제외하고 복사해서 메뉴에 HEX VIEW > paste as hex >

 

구분자로 쓸 수 있는 것(ucs2): %, %u, %x

* ucs2 hex ascii로 변환한다.

 

난독화를 해제하는 방법

- 최대한 정리를 해서(전처리 해서) hex로 변환하고 hexAXCII(또는 UTF-8)로 변환하면 내용이 보임. hex는 컴퓨터가 보기 편리하고 ascii는 사람이 보기 편리하다.

 

 

실습4) Mal.js라는 파일에 숨어있는 비밀 내용은 무엇일ᄁᆞ요?

notepad++로 열어봐야 한다.(아니면 메모장으로 열어야 함.)

2. 안에 글자들만으로 문제를 풀 수 없고 함수들을 이용해야 한다. 일단 전체를 복사한 다음에

3. malzila에 와서 디코더탭에 붙여넣기를 한다.

 

 

4. 복사해서 hexview > paste as hex > 해당 부분 복사해서 copy selection as text > bluebell_decoder.exe> 붙여넣기해서 base64

 

 

 

 

난독화

- 공격 스크립트의 약 90%은 난독화를 이용하는 것이 특징

요즘에 스크립트로 공격하는 경우에는 90% 이상은 난독화를 이용한다. 평문 스크립트로 공격할 일은 없다. 초보자들 뺴고는 거의다 난독화를 사용한다.

 

실습5) qr코드로 스크립트를 실행시킨다면?

스마트폰 사용자가 일반 pc사용자보다 훨씬 많다. 그래서 스마트폰 사용자가 웹을 이용하는 비율이 훨신 많아졌는데, qr코드를 찍는 경우에 만약 나쁜 사람이 스크립트를 나쁜 목적으로 만들고, 스크립트를 가지고 qr코드를 만든다. 이를 나눠주는데, qr코드를 찍으면 악성 앱이 다운로드 받아지거나(모바일은 이것만 가능), 링크를 주거나 피싱 사이트로 가게 된다.

 

만약 qr코드가 담긴 전단지를 회사 앞에서 나눠주는데, qr를 찍는 순간 앱을 설치하라고 한다. 이 앱을 설치하면 이 앱이 스마트폰에서 하는 일을 컨트롤할 수 없다. 주소로 다 복사해서 인터넷으로 보내고 문제 메시지 복사해서 인터넷으로 보내고 해도 말릴 수 없다. 이게 해킹앱인데, 이를 다운로드 받을 수 있게 하는 것, 사람이 볼 수는 없지만 스마트폰은 인식을 해서 동작을 하게 된다. 난독화와 차이가 없다. 그래서 굉장히 위험.

 

 

z인덱스란 일종의 레이어로 숫자가 크면 위에 배치되고 이러한 이미지들을 자기네 홈페이지 앞에 뜨게 된다. 그래서 아침에 출근하면 홈페이지에서 맨 앞에 심각한 그림들이 올라와있게 된다. 이처럼 z인덱스값이 커지면 화면 앞을 가리는 상태가 된다. 이를 deface라고 한다.

 

Deface: 얼굴을 제거한다. 망신을 준다는 의미

비슷한 표현) 면목이 없습니다. (: face, : eye)

 

Deface공격: 웹 사이트의 첫 페이지를 바꾸는 공격

이미 해킹이 다 되어있는 상태에서 D-Day에 이미지만 바꾸는 것