-
linux μμ μμ±ν λ©λͺ¨λ¦¬ λ€ν νμΌμ volatility λ‘ λΆμνκΈ° :: profile λ§λ€κΈ°, KASLRSECURITY/FORENSICS 2020. 12. 26. 18:00
μ΄ κΈμ
volatility λ‘ linux νμΌ λΆμ μλ - linux νλ‘νμΌ λ§λ€κΈ° - κ·ΈλΌμλ μκΈ°λ λ¬Έμ [KASLR]
λ₯Ό μκ°νλ©° ν΄κ²°νλ μμλ‘ μ΄λ£¨μ΄μ§λ€.
volatility λ‘ λ©λͺ¨λ¦¬ λ€ν νμΌμ λΆμνλ €λ©΄ ν΄λΉ λ©λͺ¨λ¦¬ λ€ν νμΌμ μ΄μ체μ μ λν νλ‘νμΌμ΄ μμ΄μΌ νλ€.
volatility μλ κΈ°λ³Έμ μΌλ‘ windows μ λν νλ‘νμΌμ΄ ν¬ν¨λμ΄ μκ³ ,
windows μ μ¬μ©ν μ μλ νλ¬κ·ΈμΈλ€μ΄ λ§κΈ° λλ¬Έμ κΈ°λ³Έμ μΌλ‘ λ©λͺ¨λ¦¬ λ€ν νμΌ λΆμμ μν΄μλΌλ©΄ windows κ° λ μμν μ μλ€.
κ·Έλ°λ° λλ VMware μ λ§λ κ°μλ¨Έμ μ΄ Ubuntu λΌμ κ·Έλ₯ κ·Έ λ¨Έμ μ λ©λͺ¨λ¦¬ λ€νλ₯Ό λκ³ ,
λΆμνλ €κ³ μλνμλ€.
(κ·Έλ¦¬κ³ λ§€μ° νννμλ€)ν΄λΉ νμΌ μ΄λ¦μ file.vmem μ΄κ³ volatility λ₯Ό μ¬μ©ν λ κ°μ₯ κΈ°λ³Έμ μΈ imageinfo νλ¬κ·ΈμΈμ μ¬μ©ν΄μ μ΄λ€ μ΄μ체μ μΈμ§ μλ €κ³ νμΌλ,,,,
λ€μκ³Ό κ°μ λ©μμ§κ° λ¨κ³ μ’ λ£λμ§ μμλ€.
ν΄λΉ νλ‘νμΌμ΄ μμ΄μ μ΄λ€ μ΄μ체μ μ μ΄λ―Έμ§ νμΌμΈμ§ κ²μμ λͺ»νκ³ μλ κ²μ΄λ€.
κ·Έλμ μ²μμλ volatilityfoundation μμ κ°μ’ νλ‘νμΌμ μ 곡νλ κ² (github.com/volatilityfoundation/profiles μμ λ³΄κ³ λ€μ΄λ°μ μ μλ€)
μ μ°Ύμ λ€μ΄λ°μμ μ€ννλ €κ³ νμΌλ,
bash λ²μ μ°¨μ΄λ‘ μΈν΄ μ λλ‘ μλνμ§ μμλ€.
κ²°κ΅ μ§μ νλ‘νμΌμ λ§λ€κΈ°λ‘ κ²°μ νμλ€.
----------Linux νλ‘νμΌ λ§λ€κΈ°---------
linux νλ‘νμΌμ module.dwarf νμΌκ³Ό System.map νμΌμ ν보ν΄μ μμΆνλ©΄ λλ€.
-module.dwarf : 컀λμ λ°μ΄ν° ꡬ쑰μ λν λͺ μΈμ. [volatility λ₯Ό ν΅ν΄ μ»μ μ μμ]
-System.map : 컀λμ symbols μ 보 [μμ€ν λ΄μμ κ°μ§κ³ μμ]
-κΈ°λ³Έ μ¬ν: volatility κ° μ€μΉλμ΄ μμ΄μΌ νλ€.
μ€μΉκ° μλμ΄μλ€λ©΄, 컀λ©νΈ μ°½μμ
$ git clone https://github.com/volatilityfoundation/volatility.git
-μμΈ κ³Όμ :
1) κ°μλ¨Έμ μ ν¨λ€.
2) volatility/tools/linux ν΄λμμ make --> module.dwarf νμΌ μμ±
$ cd volatility/tools/linux
$ make
3) uname(μμ€ν μ 보 μΆλ ₯) νμΈ λ° /boot ν΄λμμ System.map νμΈ
$ uname -r
$ ls /boot
νμ¬ μμ€ν μ μ΄λ¦μΌλ‘ λμ΄μλ μ System.map νμΌμ μ¬μ©ν κ²μ΄λ€.
4) zip λ§λ€κΈ° <μ΅μ’ >
$ zip [zipFileName].zip ./volatility/tools/linux/module.dwarf /boot/System.map-4.15.0-29-generic : λ΄ μν©
$ zip $(lsb_release -i -s)_$(uname -r)_profile.zip ./volatility/tools/linux/module.dwarf /boot/System.map-$(uname -r)
: μ΄ λͺ λ Ήμ΄λ₯Ό κ·Έλλ‘ μ°λ©΄ λλ€.
(lsb_release -i -s μ 리λ μ€ λ°°ν¬ν λ²μ , uname -r μ μμ€ν μ 보λ₯Ό κ°μ Έμ¨λ€.)
μ΄ λͺ λ Ήμ΄λ₯Ό μ¬μ©ν κ²°κ³Όλ λ€μκ³Ό κ°κ³ , Ubuntu_4.15.0-29-generic_profile.zip νμΌμ΄ μμ±λμλ€.
μ΄μ νλ‘νμΌμ΄ μμ±λ κ² !
-------------------------------------
μμ±ν νλ‘νμΌ νΉμ μμ volatilityfoundation μμ μ 곡νλ νλ‘νμΌ zip μ
C:\Python27\Lib\site-packages\volatility-2.6\volatility-master\volatility\plugins\overlays\linux
μ μΆκ°ν΄μ£Όλ©΄ ν΄λΉ λ²μ μ 리λ μ€μ λν λ©λͺ¨λ¦¬ λ€ν νμΌμ volatility λ‘ λΆμν μ μκ² λλ€.
(μμ κ²½λ‘λ μ¬μ©μ μ€μ λ§λ€ λ€λ₯Ό μ μμΌλ μ 체μ μΈ νμ λ³΄κ³ , μμ μ λ§κ² μ€μ νλ©΄ λλ€.)
μ΄ λ zip νμΌμ κ·Έλλ‘ λ£μΌλ©΄ λλ€!
μμΆμ ν νμ μμ.
μΆκ°ν΄μ€ ν volatility μμ --info λ₯Ό ν΅ν΄ νμΈνλ©΄ μ±κ³΅μ μΌλ‘ νλ‘νμΌμ΄ μ μ©λ¨μ νμΈν μ μλ€.
(ν΄λΉ νλ‘νμΌ zip νμΌ μ΄λ¦μΌλ‘ μΆλ ₯μ΄ λλ€.
μμ μμμλ λ€λ₯Έ νμΌμ΄λ, μ΄ μ΄λ―Έμ§λ μ±κ³΅μ μΌλ‘ νλ‘νμΌμ μΆκ°νλ€λ κ²μ΄λΌκ³ μ΄ν΄νλ©΄ λλ€.)
κ·Έλ°λ° μ΄λ κ² νμμλ λ©λͺ¨λ¦¬ λ€ν νμΌμ΄ μ λλ‘ λΆμλμ§ μμλ€.
linux νλ¬κ·ΈμΈμ (κ±°μ λͺ¨λ) μ¬μ©ν΄ 보μμμλ μλ¬΄λ° κ²°κ³Όκ° λμ€μ§ μμλ€.
μ΄μ λ KASLR λλ¬Έμ΄μλ€..
(μ λ§ μλμ¬ λ»νλ€.)---- KASLR: Kernel Address Space Layout Randomization ----
: kernel μ μ΄λ―Έμ§κ° physical Memory μ λ‘λ©λλ μ£Όμμ Virtual Address λ‘ λ§€νλλ μ£Όμλ₯Ό κ°κ° Randomize ν΄μ kernel μ 곡격νλ ν΄νΉ κΈ°λ²μΌλ‘λΆν° 보νΈνλ μλ¨
λ²μ λ§λ€ KASLR μ΄ μ μ©λλμ§ μ¬λΆκ° λ€λ₯΄λ€.
1. KASLR μ μ© μ¬λΆ νμΈνκΈ°
$ sudo cat /proc/kallsyms
λ₯Ό ν κ²°κ³Όκ° μ¬λΆν ν νμλ λμΌνλ©΄ KASLR μ μ©μ΄ μλλ μμ€ν μ΄κ³ , λ€λ₯΄λ©΄ KASLR μ μ©μ΄ λλ μμ€ν μΈ κ²μ΄λ€.
kallsyms: Extract all kernel symbols for debugging
KASLR κ° μ μ©λλ€λ©΄, kernel symbols μ μ£Όμκ° μ¬λΆν ν λ¬λΌμ§κΈ° λλ¬Έμ (KASLR λ randomize μν€λ―λ‘)
μ΄λ₯Ό ν΅ν΄ νμΈν μ μλ€..
κ·Έλ¬λ λͺκ΅°λ° μ£Όμλ₯Ό μΊ‘μ³ν΄λκ³ μ¬λΆν ν ν, κ·Έ λΆλΆμ μ£Όμλ₯Ό νμΈνλ©΄ λ¬λΌμ‘λμ§ μ½κ² νμΈν μ μλ€.
λλ νμΈν΄λ³Έ κ²°κ³Ό, μμ κ°μ΄ μ£Όμκ° λ¬λΌμ§μ νμΈ
νκ³ μ λ§νλ€.(κ·Έλλ λ€νν, μΉκ΅¬μ λμμΌλ‘ ν΄κ²°ν μ μμλ€......!)
2. ν΄κ²°: kernel parameter μ nokaslr μΆκ°νκΈ°
!!μ£Όμ!!
kernel parameter μ λ°κΏ λμλ μ£Όμν΄μ μ¬μ©ν΄μΌ νκ³ ,
μ΄ ν¬μ€ν μμ μκ°νλ λ°©λ²μ νμ¬ λμ μμ€ν μ λ§μΆ κ²μ΄λ μμ μ μμ€ν κ³Ό λ€λ₯΄λ€λ©΄ λ μμλ³΄κ³ μ¬μ©ν΄μΌ νλ€.
κ·Έλ¬λ KASLR μ΄ μ μ©λ μμ€ν μ ν΄κ²° λ°©λ²μ kernel parameter μ nokaslr μ μΆκ°νλ κ²μ΄κ³
μμ μ μμ€ν μ λ§μΆ°μ kernel parameter μ μμ νμ¬μΌ νλ€!
μ λλ‘ μμλ³΄μ§ μκ³ μ΄ ν¬μ€ν μ κ·Έλλ‘ λ°λλ€κ°λ λΆμμ¬κ° λ°μν μ μμμ 미리 κ²½κ³ ν©λλ€.
(μ€μ λ‘ μ λ μ»΄ν¨ν°λ₯Ό λ 릴 λ»νκΈ°μ,, μ΄ ν¬μ€ν μ κ·Έλλ‘ λ°λλ€κ° λ°μνλ λΆμμ¬λ μ± μμ§μ§ μμ΅λλ€.
μ΄κ±΄ μ μ κ°μ. κ²½μ°κ° μμΌμ λΆκ» λμμ΄ λμμΌλ©΄ νλ λ§μμ μμ±ν©λλ€.)
-----
λ¨Όμ
$ sudo vim /etc/default/grub
μΌλ‘ vim μλν°λ‘ kernel parameter μ μμ ν κ²μ΄λ€.
μ΄λ©΄ GRUB_DISTRIBUTOR μ΄ λ³΄μΌν λ°, κ±°κΈ°μ
GRUB_CMDLINE_LINUX_DEFAULT="nokaslr"
μ μΆκ°νλ κ²μ΄ ν΄κ²° λ°©λ²μΈλ°, μ΄κ±Έ κ·Έλλ‘ μ μ©νλ€κ°λ μ»΄ν¨ν°λ₯Ό λ€ λ 릴 μλ μλ€...
μλλ©΄ λμκ² μ΄λ―Έ GRUB_CMDLINE_LINUX_DEFAULT μμκ° μκΈ° λλ¬Έμ΄λ€.
κ·Έλμ λ€μκ³Ό κ°μ΄ ν΄μ€μΌ νλ€.
GRUB_CMDLINE_LINUX_DEFAULT="quiet nokaslr"
μμ ν κ²μ μ μ₯ν΄μ£Όκ³ ,
$ sudo update-grub
μ μ€νν λ€μ μ΄ λͺ λ Ήμ΄ μ μμ μΌλ‘ λλλ©΄ μ¬λΆν μ νλ©΄ λλ€.
μ¬λΆν ν λ μ΄λ° νλ©΄μ΄ λ¨λ©΄ μ±κ³΅νλ€κ³ 보면 λλ€ .
(νμ€ν νμΈνλ €λ©΄ μμ KASLR μ μ© μ¬λΆ νμΈλ²μ λ ν΄λ³΄λ©΄ λλ€)
-------------------------------------
λ§μ½ KASLR μ΄ μ μ©λμμμ νμΈνλ€λ©΄, λ©λͺ¨λ¦¬ λ€ν νμΌμ λ¬Όλ‘ νλ‘νμΌλ λ€μ λ§λ€μ΄μΌ νλ€. γ γ
κ·Έλ°λ° κ·Έλ κ² ν¬λ§μ μ΄μ§λ μλ κ²μ΄
μ΄λλ‘ μ§ννμμμλ volatility μμ ν΄λΉ λ©λͺ¨λ¦¬ νμΌμ λΆμνλλ° λμ€λ μ λ³΄κ° κ±°μ μμλ€.
무μμ΄ λ¬Έμ μΈμ§λ μμ§λ λͺ¨λ₯΄κ² μ§λ§, linux_psscan μΌλ‘ μ€νν κ² μΈμλ λμ€λ μ λ³΄κ° μμλ€.
κ·Έλμ κ²°κ΅ λ€λ₯Έ μ΄μ체μ μμ λ©λͺ¨λ¦¬ λ€ν νμΌμ μλ‘ λ§λ€μ΄ μ€μ΅νμλ€.
κ·Έλ¬λ, linux λ₯Ό μ μλ λΆμ΄ μλλΌλ©΄ linux μμ λ©λͺ¨λ¦¬ λ€ν νμΌμ λ§λ€μ΄μ volatility λ‘ λΆμνλ κ²μ κ°μΈμ μΌλ‘ μΆμ²λλ¦¬μ§ μλλ€.
fin.
Ref.
[1] www.andreafortuna.org/2019/08/22/how-to-generate-a-volatility-profile-for-a-linux-system
[2] cpuu.postype.com/post/665132
[3] z49x2vmq.github.io/2018/01/14/kaslr/
.
'SECURITY > FORENSICS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
vmware λ₯Ό νμ©νμ¬ λ©λͺ¨λ¦¬ λ€ννμΌ λ§λλ λ°©λ² (0) 2020.11.03 Volatility μ€μΉ λ° μ¬μ©λ² (Windows) (1) 2020.11.03 λ©λͺ¨λ¦¬ λ€ννμΌ λΆμ λꡬ :: Volatility, Redline (0) 2020.11.03 λ©λͺ¨λ¦¬ ν¬λ μμ΄λ? :: λ©λͺ¨λ¦¬ λ€ν νμΌ, νμ₯μ μ’ λ₯ (0) 2020.11.03 μλ³Όλ₯¨ λμ€ν¬ μ΄λ―Έμ§ λ€ν (0) 2020.10.30