우연히 발견했는데 XP에서는 RSA 1024bit 이하 인증서를 지원하는 반면 Windows 7에서는 디지털 서명 오류를 뿜어내는군요.
# Windows XP의 경우
# Windows 7의 경우
결론 : RSA2048을 사용합시다.
우연히 발견했는데 XP에서는 RSA 1024bit 이하 인증서를 지원하는 반면 Windows 7에서는 디지털 서명 오류를 뿜어내는군요.
# Windows XP의 경우
# Windows 7의 경우
결론 : RSA2048을 사용합시다.
APMSetup에서 SSL(https)을 구축하는 방법을 설명합니다.
1. APMSETUP 설치
기본 값으로 설치합니다.
http://www.apmsetup.com/download.php
2. Openssl 설치
아래 파일을 다운로드하여 c:\openssl에 압축 해제합니다.
본 포스팅에서는 스스로가 인증기관(CA)이 되어 셀프 서명한 루트 공개키 인증서를 만들어서 사용합니다.
1) 개인키/공개키 만들기
인증기관(CA)의 키를 생성합니다.
>> openssl genrsa -out CA_Private.pem
2) 인증서 서명 요청서 만들기
인증기관에 요청할 요청서(CSR)를 만듭니다.
>> openssl req -new -key CA_Private.pem -out CA_Request.pem
지역, 회사명 등을 순서대로 기입합니다. 마지막 아래 2칸은 비워도 무방합니다.
3) 공개키 인증서 만들기
요청서를 가지고 인증기관의 개인키를 사용하여 공개키 인증서를 만듭니다.
3. APACHE 설정파일 수정
1) c:\APM_Setup\Server\Apache\conf\httpd.conf
아래 2줄을 찾아서 주석을 삭제합니다.
#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf
C:\APM_Setup\Server\Apache\bin\ApacheMonitor.exe을 실행하여 재시작한 뒤 빨간 밑줄과 같이 ssl이 올라왔는지 확인합니다.
접속 후 인증서를 확인해봅니다.
원클릭 12345 (1) | 2019.07.04 |
---|---|
Bonobo Git 설치 따라하기 (Windows 2012 R2) (0) | 2016.03.03 |
더미다 언패킹 따라하기 Themida - Winlicense Ultra Unpacker 1.4 (7) | 2014.11.11 |
EMET 5.0 - ASR 소개 및 오진 (0) | 2014.08.05 |
Internet Explorer DLL Injector (0) | 2014.04.17 |
개발환경 : Visual Studio 2013 / Windows 7 x64
Active X, 후킹모듈과 같은 브라우저용 DLL을 개발하다보면 로그 처리 및 타 프로세스와 연동할 일이 생기는데 기본적으로 브라우저는 낮은 Integrity를 가지고 있으므로 temp폴더 정도의 자원만 사용할 수 있습니다.
제가 만든 프로그램 (PIPESERVER.exe - High Integrity)에서 생성한 파이프는 브라우저(iexplore.exe - Low Integrity)에서 사용할 수 없습니다.
이를 해결하기 위해 각종 핸들(PIPE 등)을 생성할 때 SECURITY 관련 속성을 인자로 주어야 합니다.
아래 예제 소스는 RPC 파이프를 이용하여 브라우저 DLL에서 EXE의 함수를 호출하는 것을 보여줍니다.
(아래 참조사이트들을 참고하여 작성하였습니다.)
# EXE (서버) Side
주의하여야 할 점은 RpcStringBindingCompose 함수의 인자로 local을 의미하는 "\\\\."을 사용하였는데 일반적인 경우는 "localhost"를 사용해도 상관 없지만 브라우저 DLL의 경우 반드시 "\\\\."을 사용해야 정상 동작합니다.
도움이 되는 참조 사이트
RPC 기본 샘플 예제
http://www.codeproject.com/Articles/4837/Introduction-to-RPC-Part
VISTA에서 Active X와 통신
[C] 컴파일러 별 자료형 크기 비교 (0) | 2017.03.14 |
---|---|
ollydbg plugin - 메모리에서 base64 참조 코드 검색하기 (0) | 2016.12.03 |
콜스택 확인하기 (0) | 2015.04.27 |
Crypto API 를 이용하여 파일 MD5 구하기 (0) | 2015.04.07 |
zlib for windows (0) | 2014.07.01 |
ollydbg plugin - 메모리에서 base64 참조 코드 검색하기 (0) | 2016.12.03 |
---|---|
RPC 파이프를 이용한 브라우저와의 통신 (0) | 2015.05.21 |
Crypto API 를 이용하여 파일 MD5 구하기 (0) | 2015.04.07 |
zlib for windows (0) | 2014.07.01 |
Ring 3에서 Segment Descriptor의 Base Address 구하기 (0) | 2014.03.18 |
ollydbg plugin - 메모리에서 base64 참조 코드 검색하기 (0) | 2016.12.03 |
---|---|
RPC 파이프를 이용한 브라우저와의 통신 (0) | 2015.05.21 |
콜스택 확인하기 (0) | 2015.04.27 |
zlib for windows (0) | 2014.07.01 |
Ring 3에서 Segment Descriptor의 Base Address 구하기 (0) | 2014.03.18 |
먼저 PowerShell이 무엇인지 잠깐 짚고 넘어가봅니다.
윈도 파워셸(Windows PowerShell)은 마이크로소프트가 개발한 확장 가능한 명령줄 인터페이스(CLI) 셸 및 스크립트 언어이다. 객체 지향에 근거해 설계되고 있어 닷넷 프레임워크 2.0을 기반으로 하고 있다. 이전에는 마이크로소프트 셸(MSH, 코드네임 Monad)로 불리고 있었다.현재 윈도 XP, 윈도 서버 2003, 윈도 비스타, 윈도 서버 2008, 윈도 7, 윈도 8, 윈도 서버 2008 R2를 모두 지원한다.
위키백과에서 발췌한 내용입니다.
그냥 쉽게 말하면 리눅스의 bash 같은 쉘입니다.
파워쉘은 Windows에서 기본으로 제공하는데 여기에 쉘코드를 인젝션 시키는 것이 가능합니다.
이는 타겟 시스템의 기본 자원을 가지고 공격을 수행할 수 있다는 것을 의미합니다.
실제 동작을 확인하기 위해 Metasploit으로 파워쉘용 쉘코드 스크립트를 작성해보겠습니다.
메시지박스를 실행시키는 페이로드를 불러온 뒤 파워쉘 스크립트로 저장합니다.
아래는 결과입니다.
스크립트를 보면 알겠지만 쉘코드 스레드를 생성하여 실행시키는 간단한 내용입니다.
위의 스크립트를 페이로드로 활용하기엔 2% 부족합니다. 이를 Veil-Framework로 간단히 해결할 수 있습니다.
https://www.veil-framework.com/
Veil-Framework에서 제공하는 파워쉘 옵션과 다양한 페이로드를 결합하여 강력한 파워쉘 페이로드를 생성할 수 있습니다.
첫 실행화면입니다. 39개의 페이로드가 로드되었다고 나옵니다. 이를 list 명령어로 확인할 수 있습니다.
이제부터 동일한 기능을 수행하는 페이로드를 생성할 것입니다.
파워쉘 쉘코드 인젝션을 이용할 것이므로 use 21을 입력합니다.
Generate를 입력합니다.
디폴트 옵션을 사용합니다.
쉘코드를 선택하는데 tab 키를 누르면 리스트가 나타납니다. 그림과 같이 windows/messagebox 를 기입 후 적당한 값을 입력합니다.
성공적으로 파일이 저장되었습니다.
해당 배치 파일을 실행하면 메시지박스 창이 나타납니다.
공격사례 : 작년에 발표된 "godmode" 익스플로잇입니다.
GradiusX, b33f 닉네임을 사용하는 해커들이 기존 발표된 익스플로잇에 파워쉘을 얹었습니다.
여기에 사용된 파워쉘은 위 실습 내용과 같으므로 패치되지 않은 IE 브라우저에서 실행해보시길 바랍니다.
http://www.exploit-db.com/exploits/35308/
프로세스 트리를 살펴보면 iexplore.exe -> powershell.exe 형태입니다.
이처럼 커맨드라인 RCE 공격 형태에서 매우 효과적인데, JRE 공격의 경우 대부분이 커맨드라인 형태이므로 유용할 것이라 생각됩니다.
code virtuzlier v1.0.1.0 동작 분석 (3) | 2020.05.08 |
---|---|
stripper v2.07 (구버전 asprotect unpacker) (0) | 2019.12.25 |
Peach Fuzzer를 이용한 File Fuzzing #2 (0) | 2014.07.22 |
Peach Fuzzer를 이용한 File Fuzzing #1 (0) | 2014.07.18 |
MiniFuzz를 이용한 File Fuzzing (2) | 2014.07.17 |
RSA 구조체를 PEM으로 변환하는 방법입니다.
파일 혹은 버퍼로 저장할 수 있습니다.
[EC] 디지털 서명 3종 (0) | 2025.03.16 |
---|---|
[양자내성암호] Kyber 찍먹해보기 (0) | 2025.02.20 |
전자서명(pkcs#7)과 전자봉투 (0) | 2019.12.22 |
[C / openssl] 공인인증서 개인키 추출 및 RSA 구조체로 변환하기 (2) | 2016.09.08 |
openssl rsa 키 생성 테스트 (1) | 2016.01.01 |
본 포스팅은 LCF-AT가 TUTS4YOU에 공개한 Themida - Winlicense Ultra Unpacker 1.4 스크립트를 가지고 매뉴얼 언패킹 하는 것을 다룹니다.
아래 URL에 더 자세하고 많은 내용이 있습니다.
https://tuts4you.com/download.php?view.3526 <-- 튜토리얼 동영상이 있습니다.
https://forum.tuts4you.com/topic/34085-themida-winlicense-ultra-unpacker-14/
준비물
OllyDbg 1.0
ODbgScript / StrongOD / Phant0m 플러그인
ODbgScript.1.82.rar
PhantOm Plugin v1.85.rar
StrongOD v0.4.8.892.rar
언패킹 스크립트 / ARImpRec.dll
ARImpRec.dll
Themida - Winlicense Ultra Unpacker 1.0.txt
1. 디버깅 옵션에서 처음 정지될 포인트를 수정합니다.
2. 플러그인 옵션을 수정합니다.
3. 스크립트에서 DLL 경로를 수정합니다.
4. 샘플을 로드 한 후 (F9로 실행 금지) 플러그인에서 스크립트 창을 띄운 후 실행합니다.
5. 중간에 call LOG_START가 나오면 Resume합니다.
6. EFL을 어디서 체크할 것인지 묻습니다. WinLicense 안에서 할건지 밖에서 할건지
여기선 472DF9에 있으므로 Yes(안) 를 누릅니다. (WinLicense : 470000 (size : 1F80000)
6. 다이렉트 API 점프를 FIX할 것인지 묻습니다. 처음엔 NO, 추후 실패하면 Yes를 누릅니다.
7. 언패킹에 성공하면 성공 메시지가 뜨면서 코드가 복원됩니다.
2016.02.02 수정 - 요즘도 포스팅에 대해 간혹 문의를 하시는 분들이 계신데 동작이 안되면 최신 언패킹 스크립트를 찾으시는 것이 문제 해결에 빠를 것입니다. 이것도 이제는 구자료이고 2014년 이후 버전에 동작이 안될 가능성이 높습니다. 구버전 언패킹 혹은 참고용으로 보시기 바랍니다.
Bonobo Git 설치 따라하기 (Windows 2012 R2) (0) | 2016.03.03 |
---|---|
APMSetup + SSL(https) 구축 무작정 따라하기 (3) | 2015.08.23 |
EMET 5.0 - ASR 소개 및 오진 (0) | 2014.08.05 |
Internet Explorer DLL Injector (0) | 2014.04.17 |
JMP SHORT, 어디까지 점프 가능한가? (0) | 2014.01.24 |
vs-android를 사용하여 VS환경에서 쉽게 라이브러리를 빌드할 수 있습니다.
http://code.google.com/p/vs-android/
우선 메인화면에서 파일을 다운로드합니다. 다운로드 탭으로 가면 샘플파일이 있는데 이것도 다운로드합니다.
압축을 풀고 .cmd 파일을 관리자 권한으로 실행합니다.
인스톨 가이드를 보면 JAVA, ANT, Android SDK, NDK를 설치하라고 하는데 라이브러리만 빌드할 거면 NDK만 있으면 됩니다.
하나 아쉬운 점은 실행파일은 지원하지 않는다는 점입니다. 이는 컴파일러 옵션 수정으로 해결할 수 있을 것으로 보입니다.
http://developer.android.com/tools/sdk/ndk/index.html
이 곳에서 NDK를 다운로드 합니다. 32비트 타겟 플랫폼을 다운로드합니다.
C:\android-ndk-r10의 경로에 압축 해제 후 사용자 환경변수에 새로 만들기를 클릭하여 등록을 합니다. (ANDROID_NDK_BOOT)
샘플 파일을 풀고 프로젝트 파일을 열어 잘 동작하는지 확인합니다. 주의하여야 하는 점은 디렉토리의 공백이나 한글은 에러 발생이 원인이 될 수 있습니다.
NDK이외에 아무것도 설치하지 않았으므로 동적이나 정적 라이브러리로 빌드해봅니다.
빌드가 성공적이면 프로젝토 폴더\Android\Debug 에 결과물이 저장됩니다.
새로운 프로젝트 만들기
1. 빈 프로젝트를 생성합니다. (한글, 공백 X)
2. 구성관리자 -> 활성 솔루션 플랫폼 -> 새로 만들기
3. 파일을 추가하고 빌드
깨알 팁 : ndk-build와는 달리 특정 시스템 함수 사용 시 undefined 에러가 발생할 수 있습니다. dlopen()의 경우 -ldl 옵션을 링커에 설정해주어야 합니다.
시스템 콜(syscall) 함수 직접 호출하기 (0) | 2017.11.01 |
---|---|
kdress x86 빌드 (0) | 2017.10.17 |
Simple Stack Buffer Overflow in ARM (0) | 2014.08.01 |
폰에 SSH 서버를 설치하여 보다 편리한 환경 구축하기 (0) | 2014.06.17 |
분기(Branch)와 코드 패칭 (Code Patching) (0) | 2014.06.02 |