
클라이언트의 요청을 받은 웹 서버가 HTML, 이미지, JavaScript 파일 등을 클라이언트에게 전송하고, 클라이언트 측에서 이를 처리하여 화면에 표시하는 과정
JavaScript는 HTML과 함께 동적 웹사이트를 만드는 데 사용되는 랭귀지 중 하나이다. JS는 주로 서버로부터 전송되어 웹 브라우저에서 클라이언트 측에서 실행되며, 그 특성상 악성코드로써의 활용도가 높다.
- 5세대 문서형 바이러스 : MS Office 문서나 한글 파일 등에 삽입되는
- Macro 악성코드 : 자동화된 작업을 수행하는 스크립트
- Visual Basic Script (VBScript) : Windows 환경에서 작동화 작업에 사용하는 MS 스크립팅 언어
당연한 소리지만 악성코드 제작자들은 자신들의 코드를 읽고 이해하기 어렵게 난독화하는 경우가 많다. 분석하는 사람이 지쳐나가떨어지도록 하기 위해서이다.
원래 코드의 기능을 유지하면서도 사람이 이해하고 분석하기 어렵게 변환하는 과정
ex) 1이라고 쓰면 될 것을 2*50-297/3이라고 쓴다던지
코드나 데이터를 압축하거나 암호화하여 크기를 줄이거나 보호하는 기술 (난독화의 한 형태로 실행 파일이나 스크립트에서 많이 사용되어 리버싱 난이도를 올림)
브라우저 개발자 도구 열기/닫기
개발자 도구를 열고 console 탭으로가서
alert("hello")
를 입력해보자

경고창이 잘 뜬다.
이제 다음 사이트로 이동해서 저 짧은 JS 코드를 난독화 시켜보자.
http://dean.edwards.name/packer/
Base64 encode에 체크 표시를 하고 Pack 버튼을 눌러주면 입력한 코드가 난독화 된다.

참고로..
3 byte의 binary 데이터를 4개의 ASCII 문자로 변환하는 인코딩 방식
more info
자, 이제 난독화된 JS 코드를 개발자도구 콘솔에 붙여넣어 보자.

alert("hello")를 입력하였을 때와 똑같이 동작하는 것을 알 수 있다.
이로써 코드를 난독화하더라도 그 실행결과가 변하지 않는다는 것을 알 수 있다. 사람이 분석하기 어렵게 하는 것이 목적일 뿐이다.