악성코드 및 포렌식

java script 난독화

taktaks 2021. 4. 6. 16:34

 

다른언어에도 동일하게 적용이된다.

엔터도 하나의 데이터이다.

일종의압축하기위해서

html 에서 바이트를 절약하기위해서 다닥다닥 붙어서

유도하는 방법 압축시킴

 

 

 

함수로 표현함으로써 흐름을 혼란스럽게만든다.

 

function을 실행해서 

 

 

var n 은 2이고

var a는 test이고 alerta 와 alert n을 전달하는것

 

funtion을 하나선언해서 함수는 a()에서 실행이되는 것이여서 어렵게만든거

 

 

 

 

var a 는 funtion()

var n =2

var a = test 

 

원래 이전에있던함수이지만

갈기갈기찍은것입니다.

 

var s0부터 var s13까지

 

 

이전부 왼쪽에있는 스트링들을

조합해서 오른쪽에 전부 합친것입니다.

실질적으로 왼쪽에있는 내용이

반영되는곳은

 

document.write(부터이다.

 

 

문장사이사이에

 

vars0사이에 boanproject를 넣은 것입니다.

 

즉 쓸모없는  string을 하는 것입니다.

보안프로젝트가나오면 아무것도없는 문자열로 치환을 하겠다.

라는것입니다.

 

 

아스키코드로 인코딩해두면 완전히 알아보기가 힘들어집니다.

 

컴퓨터는 해석하기가쉽지만 인간은 입니다

%아스키값을 통해서 unescape 함수를 통해서

모두 탈출하고 문자를 합치고 s.replace 보안프로젝트 문자열을 없애고

eval까지 합니다.

 

 

실습==============================

 

 

 

 

1.html 을 만든뒤에

 

<script>
var n = 2;
var a = "test";
alert(a);
alert(n);
</script>

 

 

이렇게 집어넣은 뒤에

 

실행을 시켜봅시다.

 

 

 

 

 

 

이렇게 alert가 뜨는데

 

이파일을 난독화해봅시다.

 

 

 

 

 

 

난독화 1=================

 

의미없는 데이터 없애기

 

<script>var n = 2;var a = "test";alert(a);alert(n);</script>

 

문제없이 똑같이 작동을 했다.

 

 

 

 

난독화 2====================================

 

 

 

<script>var a = function() {var n = 2;var a = "test";alert(a);alert(n);};a()</script>

 

funtion a() 를 넣어서 복잡하게 실행되게한다 결국에는 처음에 실행된것이 같다.

 

 

 

 

 

똑같은 결과가 나온다.

 

 

 

 

========================

 

 

난독화 3

 

 

이데이터를 주석처리를해주고

 

이렇게 진행을하게되면

맨위의 코드와 똑같이되서 

 

 

 

 

\

역시나 똑같은 결과가 나오게됩니다.

 

s0 ~ s8 까지해놓고 한번에 합쳐버리는 것입니다.

마지막에

 

 

 

그리고 하나로 합쳐버리고 엔터를 지우면 역시나 이렇게 어렵게되는 문자가 되는 것입니다.

 

 

 

 

 

===============난독화 4

 

 

 

이문자를

내부에 boanproject 쓰레기문자를 안에삽입해서 나중에 합치는것입니다.

 

 

그래서 이렇게 만들면

boanproject가 들어가있는 문자를 아무것도 없는 것으로 됬습니다.

 

 

 

 

쓰레기값을 넣고 변경.

 

 

==========================================================

 

 

 

 text to ascii 라고 검색하면된다.

 

 

unescape 함수는 

s를 퍼센트 된것을 바꿀수가 있습니다.