/* 
written by kaspy (kaspyx@gmail.com)
*/ 


안드로이드(android) 에서 사용되는 어플(apk)을 디컴파일(decompile) 하는 방법에 대해 다루어 보았습니다. 

안드로이드의 실행파일은 자바로 컴파일 되며, apk 확장자로 압축되어 바이트 코드로 배포 되기 때문에 이를 디컴파일 할수 있습니다.

기본 환경은 컴퓨터에 java가 설치되어 있어야 합니다.


jad_gui.zip

첨부 파일.zip



안드로이드 어플은 설치를 통해서 사용되며, 설치 전에 apk 확장자 형태로 배포 됩니다. 우선 제가 쓰고있는 안드로이드 어플 중 임의의 apk를 가지고 디컴파일을 해보겠습니다.




apk 파일을 내 컴퓨터의 임의의 디렉토리에 복사하고, 확장자만 zip형식으로 바꿔서 열면 압축된 내용과 형태를 아래와 같이 볼 수 있습니다.


 부한 파일 undx.jar, dexdump.exe, mgwz.dll을 다운받아서 classes.dex 가 위치 하는 곳에 아래와 같이 복사해주고, gen 이라는 빈 폴더를 하나 만들어 줍니다.




 그리고 위의 경로를 프롬프트 창을 열어서 아래와 같이 명령어를 입력해 줍니다.


java -DASDKLoc="E:\SHADOW\Work\CERT\basketrun_bin_20100511a" -jar undx.jar classes.dex




저기서 경로는 압축을 풀어준 경로입니다.

위와 같이 입력해주면 class 파일로 구성된 압축 파일 형태가 gen 폴더에 생성됩니다.





classes.dex.jar 의 압축을 풀어보면 자바로 컴파일된 class들을 내용을 볼수 있습니다.




첨부한 jad.exe로 클래스 파일을 열어보면 디컴파일 된 소스를 볼수 있습니다.




Posted by 캐스피

댓글을 달아 주세요

  1. asdf 2015.11.22 13:22  댓글주소  수정/삭제  댓글쓰기

    감사합니다.

/* 
written by kaspy (kaspyx@gmail.com)
*/ 

 예전에 웹해킹 공부를 하면서 했던건데, 생각나서 블로깅 합니다. 현재 최신버전(1.7.x)에서는 작동하지는 않지만, 웹 해킹쪽을 공부하시는 분이있다면 조금이나마 도움이 되었으면 합니다.

 제로보드 eXpress Engine 버전도 php 관련 파일 업로드가 가능할 시에 웹쉘을 충분히 실행 시킬 수 있는 것을 개인적인 연구를 통해 확인할 수 있었습니다. 이 내용은 이미 취약점이 보고되어 패치 되었던 내용이지만 실제로 어떻게 구체적으로 웹쉘을 실행시키는지에 대해서는 나와 있지는 않습니다. 이 취약점 내역은 XE 1.2.1 버전이하 버전에서만 유효합니다.

 제로보드 XE 1.2.1에서 취약점이 발생하는 소스 코드 구간은 아래와 같습니다.
해당 파일: ./modules/file/file.controller.php

 위의 구간에서 preg_match() 함수에서 webshell.jpg.php.jpg 형태로 우회하여 업로드가 가능합니다../files/attach/images/ 폴더에 웹쉘을 올릴 수 있습니다.

 이중에 image 확장자중에 웹서버에서 해석을 못하는 확장자들이 있는데 그예가 moov나 rmm 확장자 들입니다. 해석을 못하는 확장자는 파일 형태 그대로 실행시켜 버리는데 그취약점을 이용해서 웹쉘을 실행 시킬수 있습니다.



 제로보드에서 글쓰기를 누르고 위에서처럼 웹쉘을 webshell2.moov.php.moov 형태로 올려서 본문삽입(본문 삽입시 절대 경로를 알 수 있습니다.) 글쓰기를 하고 소스 보기를 통해서 웹쉘이 있는 절대경로를 알수 있습니다.


 위의 화면은 실행된 웹쉘의 모습입니다. 실제로 위의 취약점이 보고되고 아래와 같이 파일 업로드시에 추가 필터링이 적용되었습니다.


Posted by 캐스피

댓글을 달아 주세요

/* 
written by kaspy (kaspyx@gmail.com)
*/ 


 메타스플로잇 프레임워크는 취약점을 공유하는 사이트로써 취약점 DB에 존재하는 바이너리에 대한 자동화된 공격코드를 제공해줍니다. 따라서 해킹에 대해서 깊은 지식이 없어도 조금의 개념만 익히면 자동화된 공격을 통해 시스템의 권한을 획득하거나, 불법적인 바이러스를 유포하거나 악의적인 공격 또한 할 수 있습니다. 취약점의 종류는 여러 가지가 있지만 대표적으로 버퍼 오버플로우, 웹 취약점, 암호노출 등을 들 수 있습니다.

실제 테스트한 방법은 아래와 같습니다.

1. 메타스플로잇 DB에 존재하는 취약점 바이너리 다운로드
2. 취약점이 있는 바이너리를 가지고 가상의 해킹환경 구축
3. 메타스플로잇 프레임워크를 통한 해킹 시연

1. 메타스플로잇 DB에 존재하는 취약점 바이너리 다운로드

메타스플로잇(http://www.metasploit.com/)에 접속하여 프레임워크를 다운받아 설치하고 Access Metasploit Web UI를 실행해보면 아래와 같은 화면이 나옵니다.




 그럼 실제 공격을 해보기 위해 취약점이 있는 바이너리를 검색해 보겠습니다. 위의 WebUI 메뉴 중에 Modules를 클릭해서 저는 ftp라고 검색해보았습니다.

 취약점이 존재하는 바이너리에 대한 리스트들이 나옵니다. 그 중에 제일 만만할거 같은 2006년도에 발견된 취약점 바이너리인 FreeFtpd 라는 바이너리를 선택해서 정보를 구하고 해당 URL에 들어가서 해당 취약점이 존재하는 바이너리를 다운받았습니다.


2. 취약점이 있는 바이너리를 가지고 가상의 해킹환경 구축

 Server Exploit 이라는 말은 원격 공격 취약점을 종류라는 것이고, 구체적 취약점의 이름은 Key Exchange String Buffer Overflow 라는 취약점이 존재한다는 것을 확인할 수 있습니다. 그리고 VMWare 상에 가상의 서버를 구축하였습니다. (영문판 윈도우 xp sp2환경에서 FreeFtp를 실행)

실제 모의 취약점 환경을 구축해보고 테스트 해보겠습니다.
윈도우 환경에 FreeFtpd 라는 데몬을 돌려서 가상의 취약점을 구축해놓은 상황입니다. 
그럼 메타스플로잇 프레임워크를 통해 공격을 해서 서버의 권한을 얻어보겠습니다. Metasploit Console이라는 프로그램을 실행해주시기 바랍니다. 

3. 메타스플로잇 프레임워크를 통한 해킹 시연

“search” 명령어를 통해 해당 바이너리에 대한 취약점을 검색할 모습입니다. FreeFtpd 에대한 공격 코드는 위에서 보는 것처럼 2개인데, 저는 아래에 있는 
“exploit/windows/ssh/freeftpd_key_exchange” 라는 취약점에 대한 공격 코드를 사용해 보겠습니다.

“use” 라는 명령어를 통해 공격 코드를 제작해보겠습니다. 
공격을 실제 하려면 우선 ① “target”이 지정 되어야 하고, ② “payload” 와 ③ “추가 옵션”을 지정해 줘야 합니다. 여기서 “target” 이라면 실제 공격할 서버의 실행 환경 이해하면 되고, “payload” 라면 실제 공격에 성공했을 때 실행할 특별한 코드로 이해하시면 됩니다. 추가 옵션은 지정한 payload에 따라 다르게 지정해주는 옵션들입니다.

타겟 서버 환경은 영문 버젼의 윈도우 SP0~4 환경이므로 0번을 지정 하였습니다.
그럼 이제 payload를 적용해 보겠습니다. show payloads 라는 명령어를 통해 실제 공격시에 수행할 명령어를 찾아보겠습니다.

 굉장히 많은 payload 코드들이 존재하는데 위에서 하고 싶은 공격 코드를 선택해주면 됩니다. 단순히 메시지 박스를 띄우는 명령어 코드부터 특정 URL에 접속하여 다운로드하고 실행하라는 다양한 명령어 코드들이 존재합니다. 저는 “bind_tcp” 라는 payload를 선택하였습니다. 참고로 bind_tcp (bindshell)라는 payload는 공격시 특정 포트에 백도어를 열어두고 접속하면 쉘 권한을 얻을 수 있는 공격 명령어 코드입니다. 아래와 같이 set 명령어로 payload를 bindshell로 지정해주세요.


\
여기서 보시면 LPORT를 보실 수 있는데 공격했을 때 접속할 포트 번호 그리고 RHOST는 공격할 서버의 아이피 주소를 지정해줘야 함을 알 수 있습니다. LPORT와 RHOST를 지정해보겠습니다.

 이제 공격 코드에 대한 모든 설정이 끝났으면 실제 공격을 수행해야 합니다.

“exploit” 이라는 명령어로 실제 공격을 수행해보겠습니다.

 공격에 성공했을까요?? 실제 bind 쉘이 열려서 해당 서버에 관리자 권한으로 접속되는지 1977 포트로 접속해 보겠습니다.

타겟 서버의 1977 포트로 접속하면 해당 서버의 관리자 권한으로 로그인이 되는 것을 확인할 수 있습니다.

(실제 공격을 할 때는 타겟 서버의 정보를 모르는 상태이므로 포트 스캔이나 여러가지 사회 공학 기법을 통해 서버의 취약점 정보를 알아내서 공격을 하게 됩니다.) 이렇듯 타겟 취약점이 존재하는 타겟 바이너리에 대한 정보를 알면 거기에 맞는 공격 코드 스크립트를 작성해서 해킹을 할 수 있음을 확인할 수 있습니다. 이외에도 익스플로잇 쉘코드를 만들때도 메타스플로잇을 사용하면 쉽게 만들수 있습니다.


Posted by 캐스피

댓글을 달아 주세요

  1. 수성 2015.04.13 21:09  댓글주소  수정/삭제  댓글쓰기


    "실제 bind 쉘이 열려서 해당 서버에 관리자 권한으로 접속되는지 1977 포트로 접속해 보겠습니다."


    실제로 공격 성공한 모습을 무슨 실행 프로그램으로 열어야 하죠

    • 캐스피 2015.04.14 10:07 신고  댓글주소  수정/삭제

      nc 라는 프로그램으로 접속했어요, bind 쉘이라는건 특정 포트에 접속하면 쉘이뜨는 명령어로 1977 포트에 접속만해주면 윈도 쉘이 뜨게된답니다

  2. 수성 2015.04.14 19:55  댓글주소  수정/삭제  댓글쓰기

    흠...nc는 실행 해봤자 바로 꺼지기 때문에... 다른 프로그램은 없는지...

    • 캐스피 2015.04.15 00:53 신고  댓글주소  수정/삭제

      해당 명령어는 바인드 쉘이라서 nc로 접속하게되면 윈도 bind 쉘 접속이 계속 유지된답니다. 혹시 관련 윈도 환경을 잘못 설정하신것은 아닌지?? (윈도 운영체제라도 언어나 SP등등 버전에 따라 쉘코드가 다 달라진답니다.)

  3. kali 2017.07.23 22:41  댓글주소  수정/삭제  댓글쓰기

    혹시 윈도우 서버 2008 32비트를 공격해서 피해자 컴퓨터에서 실행파일을 실행하려고하는데요
    metasploit으로 use exploit/windows/smb/eternalblue_doublepulsar 사용해서
    공격은 불가능한가요? 아무리 해봐도 세션을 못가져오네요.. 그래서
    ms09_050_smb2_negotiate_func_index shell라는걸로 어찌어찌 세션은 얻어왔는데
    cmd로 접속해서 텍스트 문서 하나도 못열어보네요.권한은 nt authority\system이렇게 나오는데
    start명령어로 아무것도 실행이안되네요 혹시 해결방법 문의드려도 될까요??

    • 캐스피 2017.07.28 11:26 신고  댓글주소  수정/삭제

      smb 취약점 익스플로잇을 사용하시려는거같은데.. 그전에 그취약점이 존재하는 버전의 smb 환경을 구축해줘야합니다.

      https://the-infosec.com/2017/05/01/exploiting-windows-with-eternalblue-and-doublepulsar-with-metasploit/