작년 말에 TPM(Trusted Platform Module)과 관련한 취약점과 이로 인해 마이크로소프트사의 디스크 암호화 기법인 비트락커(BitLocker)가 풀릴 수 있다는 내용을 Black Hat Europe 2019에서 발표했습니다. 그때 앞줄 가까이 앉아있던 친구가 있었는데, 그 친구가 덴마크에서 Version 2라는 IT 전문 미디어를 운영하고 있었군요. ^^;;;

덴마크어로 되어 있어서 구글 번역기를 돌려야 했지만... 쿨럭...;; 내용이 잘 정리되어 있어서 깜짝 놀랐습니다. 기사를 정리해준 Jakob 덕분에 새해 초부터 선물을 받은 기분입니다. 기사는 아래에서 보실 수 있습니다(하지만... 덴마크어라 언어의 장벽이....).

그럼 좋은 하루 되시고, 새해 복 많이 받으십시오. _(_ _)_ 

https://www.version2.dk/artikel/har-du-mistet-adgang-din-bitlocker-partition-maaske-kan-bitleaker-hjaelpe-1089646

 

Har du mistet adgang til din Bitlocker-partition? Måske kan Bitleaker hjælpe

Bitleaker blev præsenteret på Black Hat-konferencen i London. Værktøjet gør det muligt at tilgå Windows-kryptering helt uden autentifikaton.

www.version2.dk

 

Black Hat Asia의 Review Board에 합류했습니다. @0@)-b 가문의 영광이자 저한테는 과분한 기회인데... 열심히 한 번 해보겠습니다! 사실 합류한지는 조금 지났는데요...^^;;; 여러 가지 일도 있고 Black Hat Europe 발표 준비를 해야 해서 이제야 한 자 적어봅니다.

Black Hat 컨퍼런스는 매년 Asia, USA, Europe에서 열리는데요, Asia의 경우는 약 2000명이 다녀갈 정도로 크고 인지도가 높은 산업계 주도의 컨퍼런스입니다. Offensive 관련 주제가 많고 파급력 있고 실용적인 주제를 높게 평가하기 때문에 흥미로운 내용으로 가득 차 있지요. ^0^)/

Black Hat Asia 2020의 CFP가 지난 달에 닫혀서 리뷰가 진행 중인데요, 다른 리뷰어님들께 누가 되지 않도록 열심히 하겠습니다. 사실 논문 편수가 300건이 넘게 제출돼서, 제가 맡은 트랙만 리뷰하는데도 편수가 꽤 되는군요. 부담이 벌써부터... 쿨럭..;;; 일단 어느 정도 리뷰가 끝난 상태인데, 열심히 하겠습니다. ^^;;;

전체 리뷰어 목록은 Black Hat Asia 2020 Review Board 에서 보실 수 있습니다.

그럼 좋은 하루 되세요 ^^

ps) 조금 내려가시면 가운데쯤 Seunghun Han이라고 되어 있습니다. 쿨럭..;;;

간만에 쓰는 장문의 글이라 세 줄 요약부터 하겠습니다.

  1. Black Hat Europe 2019에 하드웨어 및 펌웨어 TPM과 Microsoft사의 BitLocker 취약점 관련 내용 발표 예정 BitLeaker: Subverting BitLocker with One Vulnerability

  2. 소프트웨어만으로 BitLocker의 주요 키(Volume Master Key, VMK)를 추출한 건 최초이며 관련 데모 영상은 https://youtu.be/H6uAkLC_8kQ 에서 확인 가능

  3. BIOS/UEFI 펌웨어를 최신으로 업데이트 필요. 보증기간이 지나 업데이트가 불가능하면 PIN 옵션과 함께 BitLocker 사용

이하 본문입니다. ^^;; Black Hat Europe 2019가 벌써 다음 주에 열리네요! 이번에도 TPM 취약점으로 #BlackHat Europe에 발표하러 가게 되었는데요, Black Hat Asia에 제출된 논문들을 리뷰하느라 이제야 준비를 거의 마쳤습니다! 이전 발표와 차이점이라면 Microsoft사의 BitLocker와 Intel사의 PTT(Platform Trust Technology) 관련된 내용이 추가된 것입니다. ^^;;; (발표 내용은 Black Hat Europe 2019에서 보실 수 있습니다.)

사실 TPM 취약점은 이미 작년에 USENIX Security를 통해서 공개가 되었습니다. 다만, 같은 류의 절전 모드 취약점이 펌웨어 TPM(Intel PTT)에서도 발견되어 Intel에 관련 내용을 전달하고 이번 발표에 추가했습니다. Intel PTT는 하드웨어 TPM과 달리 펌웨어로 동작하기 때문에 제조사의 입장에서는 별도의 비용이 들지 않고, TPM 2.0의 기능을 갖추고 있어서 저가 제품부터 고가 제품까지 널리 사용되고 있습니다. Microsoft사의 BitLocker 역시 Intel PTT로 구동이 가능하고 가장 중요한 키인 VMK(Volume Master Key)를 하드웨어 TPM이나 펌웨어 TPM으로 암호화하고 있습니다.

하지만, 안타깝게도 TPM 2.0의 취약점으로 인해 암호화된 VMK가 노출되고, 노출된 VMK로 BitLocker로 암호화된 영역을 해제하여 데이터를 읽어낼 수 있습니다. 그동안의 연구들은 TPM에 물리적으로 접근하여 VMK를 읽어냈지만, 소프트웨어만으로 VMK를 추출해 낸 것은 저희 연구가 처음이라 최대한 많은 내용을 발표에 담고 해결책을 제시하려고 노력했습니다. VMK 추출 및 BitLocker 복호화 관련 데모는 BitLeaker Demo 에서 보실 수 있습니다.

그나마 다행인 것은 제조사들이 패치를 진행하고 있으며, 최신의 BIOS/UEFI 펌웨어로 업데이트하면 위협이 사라진다는 점입니다. 하지만, 보증기간이 지난 제품들은 여전히 위협에 노출된 상태이기에 분실이 가능한 모바일 단말의 경우 주의가 필요합니다.

해결방법은 의외로 간단합니다. Black Hat Europe에서도 발표될 예정이지만 BitLocker와 PIN을 함께 사용하면 됩니다. PIN을 활성화하면 TPM이 암호화된 VMK를 해제할 때 이를 사용하기 때문에, TPM 취약점이 존재해도 VMK가 쉽게 노출되지 않습니다. PIN을 활성화하려면 "제어판" -> "시스템 및 보안" -> "BitLocker 드라이브 암호화"로 이동하셔서 "시작 시 드라이브의 잠금 해제 방법 변경"을 클릭하시고 "PIN 사용"을 클릭하시면 됩니다. TPM 취약점이 해결되었는지 아닌지를 고민하고 싶지 않다면, PIN과 함께 BitLocker를 사용하시길 권합니다. ^^;;

Demo - BitLeaker: Subverting BitLocker with One Vulnerability

리눅스(linux) 환경에서 권한 상승이 필요할 때 많이 쓰는 방법이 sudo를 이용하는 것인데요, 다들 아시겠지만 sudo를 사용하려면 sudo 패키지가 시스템에 설치되어 있어야 합니다. 그리고 _etc_sudoers 파일에 sudo를 사용할 계정이 추가되거나 sudo 그룹에 가입되어야 하지요.

일반적인 상황은 아니지만, 간혹 자동화를 목적으로 사용자의 패스워드 입력 없이 특정 실행파일을 관리자(root) 권한으로 실행해야 할 경우가 있습니다. 이런 경우, 사용할 수 있는 방법이 _etc_sudoers 파일에 패스워드 입력을 생략하는 내용을 추가하는 건데요, 사용자 명이 user이고 관리자 권한으로 실행해야할 파일이 _usr_bin/xeyes라면 다음과 같이 마지막줄에 추가하면 됩니다.

# /etc/sudoers 파일의 내용
... 생략 ...

#includedir /etc/sudoers.d
user    ALL=(ALL)   NOPASSWD:   /usr/bin/xeyes

만약 user의 경우는 모든 파일을 패스워드 입력없이 사용하고 싶다면 아래와 같이 변경하시면 됩니다.

user ALL=(ALL)  NOPASSWD:   ALL

그럼 좋은 하루 되세요 ^^

요즘 만자로(Manjaro) 리눅스를 주로 쓰고 있는데요, 사용하는 PC의 NVIDIA 그래픽카드와 궁합이 좋지 않은지 화면이 찢어지는 문제가 발생했습니다. ㅠㅠ 눈 상태가 요즘 점점 나빠지고 있는데 화면까지 그런 문제가 생기니 어떻게든 해결해야겠다는 생각이 들더라구요. 아. 물론... 쉬는 게 가장 좋기는 한데... 요즘 발표 요청이 많이 들어와서 주말에도 바쁜 나날을 보내고 있습니다. ㅠㅠ

그렇게 찾다보니, 드라이버를 다시 한번 설치 봐야겠다고 알아보니, 최신 NVIDIA 드라이버를 다운받아서 설치하는 방법이 있었습니다. 이렇게 해보니 찢어지는 현상이 없어졌네요. ^^;;; 결국 드라이버의 문제였던 듯... ㅠㅠ

만자로에서 NVIDIA 드라이버를 설치하는 방법은 아래와 같습니다.

# 아래처럼 입력해서 만자로 하드웨어 디텍터로 설치하고 리부팅합니다.
$> sudo mhwd -a pci nonfree 0300
$> sudo reboot

# 리부팅 후 아래처럼 입력하면 NVIDIA 설정 프로그램을 실행할 수 있습니다.
$> nvidia-settings

최신 NVIDIA 드라이버를 만자로 리눅스에 설치하는 방법은 공식 사이트를 참고하세요.

만자로 공식 사이트: https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-manjaro-18-linux

그럼 좋은 하루 되세요 ^^

만자로 리눅스(Manjaro Linux)는 아치(Arch) 리눅스 기반에 롤링 릴리즈를 장점으로 내세운 배포판인데요, 요즘 주 배포판으로 사용하고 있습니다. 기본 설치 후 한글 관련 설정만 해주면 쓸 수 있을 정도로 꽤나 잘 관리되어 있는데요, 한글 관련 설정 방법은 아래와 같습니다.

# iBus 한글 설치
$> sudo pacman -S ibus-hangul ibus-qt

# 설치 후 홈 디렉토리에 $HOME/.xprofile을 생성하고 아래 내용을 추가
$> vi $HOME/.xprofile
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
export OOO_FORCE_DESKTOP="gnome"
ibus-daemon -drx

그리고 로그아웃 및 로그인을 하면 한글 입력기가 실행됩니다.

그럼 좋은 하루 되세요 ^^)/~

요즘 만자로 리눅스(Manjaro Linux)를 주로 사용하고 있는데요, 만자로를 쓰다보면 제일 먼저 당황하는 것이 한글 입력 설정과 마우스 클릭 시 바로 실행되는 옵션입니다. 보통은 더블클릭을 해야 실행에 옮기기 때문에 이러한 기본 설정은 상당히 당황스러운데요, $HOME/.config/kdeglobals 설정 파일을 변경함으로써 처리할 수 있습니다.

$> vim ~/.config/kdeglobals

[KDE]
# 아래 라인 추가
SingleClick=false

그리고 로그아웃 후에 다시 로그인하면 마우스 클릭이 아닌 더블클릭으로 실행할 수 있습니다.

그럼 좋은 하루 되세요 >ㅁ<)-b

최근에 리디북스 페이퍼와 함께 열린책들 세계문학을 구매했습니다. ^^;;; 그동안 꽤 지름이 없었던지라 흥분(?!)하면서 질렀던 기억이 나는데... 생각보다 리디북스 페이퍼가 빠릿빠릿하고 커서 책을 읽기에는 아주 그만입니다. 사실 이전에는 yes24의 크레마 터치를 사용했는데, 업데이트가 끊어진 뒤로 리디북스 앱을 이용할 수가 없었거든요. 그래서 이북 리더기를 찾던 중에 때마침 리디북스에서 세일을(... 쿨럭..;;) 하는 바람에 페이퍼 프로를 사게되었네요. 결과는 일단 대만족입니다. @0@)-b

일단 기기를 사면 본전을 뽑아야하기 때문에 세계문학을 같이 구매했는데 틈틈이 읽는 재미가 쏠쏠합니다. 쉬엄쉬엄 보다보면 그냥 책 한 권은 보는 것 같은데... 그렇게 본 첫 번째 책이 바로!! 1984입니다. 조지 오웰이 쓴 책이던데요... 사실 조지 오웰하면 막연히 동물농장 그리고 현실 비판... 뭐 이렇게만 알고 있었습니다. ㅠㅠ 사실 책은 한 번도 안 읽어봤는데... 오늘에서야 1984만 살짝 읽어봤네요. (쿨럭...;;; 다음에는 동물농장을 볼 예정입니다.)

<출처 - 리디북스>

시대적 배경은 과학기술은 엄청나게 발전했지만... 빅브라더가 사람들을 통제하고 권력층을 의미하는 당을 유지하는데만 과학기술을 사용하는 시대입니다. 물론 당의 수족 역할을 하는 낮은 계급의 사람들이나 일반 평민들, 하인들은 정보가 통제되고 과거가 마구 수정되기 때문에 이러한 현실을 모르지요. 이런 와중에 과거를 수정하는 일을 담당하는 주인공이 뭔가 이상한 낌새를 눈치채고 혼자 방황하다가, 빅브라더에 대항하는 형제단의 소문을 듣고 그들과 함께 빅브라더를 타도하려고 하는 내용이 주요 흐름입니다. 그러다가 여자친구도 생기고 뭐 형제단인 듯한 사람을 만나 희망도 생기는 듯 했으나... 이 책의 후반에가면... 철저하게 무너집니다. 아주 철저하게 무너져요. 꿈과 희망이 없다는게 어떤 건지... 주인공의 절망이 글을 읽는 와중에 느껴질 정돕니다. 어휴... 그 답답함이란...

주인공은 해피하게 엔딩하지만... 실제로는 배드 엔딩이라 읽어보시면 충격이 좀 클 수도 있습니다. 그래도 프라이버시로 시끌시끌한 요즘... 한 번쯤은 읽어볼만 한 것 같습니다. ^^;;;

응용프로그램을 디버깅하다보면 항상 고정된 위치에 응용프로그램이 로딩되어야 할 필요가 있는데요, 최신의 리눅스에는 해킹 방지를 위해 ASLR(Address Space Layout Randomization) 기능이 활성화되어 있어서 실행할 때마다 항상 다른 위치에 응용프로그램이 로딩됩니다. ㅠㅠ 좋은 기능이긴 한데... 디버깅시에는 크게 도움이 안되지요. ㅠㅠ

이 기능을 비활성화하려면 다음과 같이 파일을 추가하면 됩니다.

$> sudo vi /etc/sysctl.d/01-disable-aslr.conf

kernel.randomize_va_space = 0

아우 디버깅이 빨리 끝나야할텐데... 걱정이네요. ㅠㅠ

그럼 좋은 밤 되세요. ^^

Git에 소스코드를 커밋하기 전에 git diff로 소스를 확인하면 불필요한 공백(Whitespace)를 붉은색으로 표시해줍니다. 일일이 이 부분을 찾아서 제거하려면 불편한 점이 한 두가지가 아닌데요, VIM에서는 이를 한 번에 해결할 수 있습니다.

바로 VIM의 커맨드라인에서 아래와 같이 입력하면 됩니다. @0@)-b

:%s/\s\+$//e

아아 역시 VIM은 진리인 듯... 그럼 즐거운 하루 되세요. ^^

최근 뜨고 있는 쉘로 ZSH, Z Shell가 있는데요, 무엇보다 Git에 친화적인 인터페이스때문에 요즘 저도 쓰고 있습니다. 처음 ZSH를 설치하면 일반 bash와 크게 다를 바가 없어서 조금 실망할 수 있는데, 밋밋함을 없애고 기본적인 셋팅을 해주는 것이 Oh My Zsh 입니다.

Oh My Zsh를 설치하고 홈 디렉터리에 있는 .zshrc만 수정해주면 Git 친화적인 쉘이 탄생하는데... 써보고 싶은 분들은 아래와 같이 입력하시면 됩니다.

# Zsh 설치
$> sudo apt-get update
$> sudo apt-get install zsh

# Oh My Zsh 설치
$> curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh

# Git 친화적인 테마인 agnoster로 설정 변경
$> vi ~/.zshrc
...
ZSH_THEME="agnoster"

# Zsh 실행
$> zsh

그럼 좋은 하루 되세요 ^^

저는 여전히 하고 싶은 일을 하면서 살고 있습니다 - 1편, 2편, 3편, 4편, 5편에 이은 무려 6편입니다. 예전에 누군가가 "애기 낳고 키우다 보면 꿈은 자연스럽게 멀어지고 퇴물이 되게 되어있어" 하길래 나는 안그래야지 하는 오기로 쓰기 시작한 글인데요, 벌써 6년째 쓰고 있군요. 제가 이렇게 꾸준할 수 있는건 어머님께 물려받은 끈기 때문인데요, 올해는 어머님이 돌아가시는 큰 불행이 있었지만... 그럼에도 불구하고 꾸준히 앞으로 나아가고 있습니다. 감사합니다. 어머님.

작년에 꽤 많은, 그리고 의미 깊은 일들이 있었는데요, 올해는 그에 못지 않은 더 대단한 일들이 있었습니다. 지금 생각해도 꿈같은 일인데, 크게 세 가지만 말씀을 드리자면...

첫 번째는 아시에 최대 보안 컨퍼런스인 Black Hat Asia 2018에 이번에도 논문을 낸 건데... 무려 2개나 되는 바람에 올해 초는 엄청 바쁘게 보냈습니다. Black Hat Asia(I Don’t Want to Sleep Tonight: Subverting Intel TXT with S3 Sleep)Black Hat Asia(Shadow-Box v2: The Practical and Omnipotent Sandbox for ARM)가 바로 그것인데요, 보안 뉴스에서 첫 번째 논문에 대해서 기사도 써주셨습니다. 해당 기사는 널리 사용되는 tBoot의 슬립모드 통해 인텔 TXT 무력화 가능에서 보실 수 있습니다.

보안뉴스에 소개된 Black Hat Asia 2018의 발표내용

두 번째는 학술적인 보안 컨퍼런스에서 가장 최고로 치는 3대 학회가 있는데요, IEEE Security and Privacy(S&P), ACM Conference on Computer and Communications Security(CCS), USENIX Security가 바로 그것인데, Black Hat Asia에 낸 논문을 확장해서 쓴 논문이 USENIX Security 2018에 수락되었습니다. 논문은 A Bad Dream: Subverting Trusted Platform Module While You Are Sleeping에서 보실 수 있습니다. 이건 정말 꿈같은 일이네요. ^^;;;

세계 3대 보안 컨퍼런스인 USENIX Security에 게재된 논문

세 번째는 홍콩에서 열리는 beVX Conference에 초청받은 일입니다. 아직 발표하러 가지는 않았지만 주제는 이미 정해진지라... 작년에 Black Hat Asia 2017에서 발표한 Shadow-box에 대해서 아마 이야기 할 것 같은데... 이 부분은 다녀와서 다시 올리겠습니다. ^^

돌이켜보면... 정말 정신없이 산 한 해인 것 같네요. 어머님께 부끄럽지 않도록 더 열심히해야 겠습니다.

그럼 좋은 밤 되세요. ^^

우분투(Ubuntu)에서 신규 커널 설치 후 USB, WIFI가 동작하지 않을 때 해결 방법

간만에 우분투(Ubuntu)에서 실험을 할 일이 있어서 여러 버전의 커널을 설치해습니다. 그런데 이상하게도... 새로 설치한 커널로 부팅하면 USB, WIFI, 터치패드 등등이 동작하지 않더라구요. ㅠㅠ... 실험할 때 동영상을 찍어야하는 지라 USB가 안되면 큰일나는데... 그래서 조금 살펴봤더니... linux-image 패키지와 함께 linux-image-extras 패키지도 설치해줘야 했습니다. 아래처럼 말이죠. ^^;;;

$> sudo apt-get update
# 신규 커널 설치
$> sudo apt-get install linux-image-4.4.0-21-generic
# 신규 커널과 관련도니 추가 패키지 설치
$> sudo apt-get install linux-image-extras-4.4.0-21-generic

예전에는 굳이 이렇게 하지 않아도 되었던 것 같은데... 오래되서 기억이 잘 안나는군요. ^^;;; 원래 이랬던 건가... ㅎㅎ

그럼 좋은 하루 되세요 ^^

페도라(Fedora)나 우분투(Ubuntu)와 같은 배포판들은 롤링 릴리즈(Rolling Release) 방식을 사용하는 아치(Arch)와 달리 배포판에 버전이 부여되고 버전 간에는 통째로 시스템을 업그레이드하는 방식을 사용합니다. 롤링 릴리즈는 이와 달리 변경사항이 매일 매일 릴리즈되고 이를 설치하면 항상 최신 버전이 되는 방식입니다. 버전을 부여하는 방식은 해당 버전을 충분히 테스트해서 릴리즈가 되기 때문에 안정성이 보장되는 것이 장점인 반면, 업데이트가 늦다는 단점이 존재합니다. 물론 롤링 릴리즈는 이와 반대의 장단점이 존재하지요. ^^;;;

저는 여러가지 배포판을 사용하고 있는데요, 그동안 너무 구 버전의 페도라를 사용하고 있어서 업그레이드를 진행했습니다. 사실 배포판 사이에 업그레이드는 잘되는 경우보다 문제가 생기는 경우가 더 많은데요, 걱정 반 기대 반으로 시작했습니다. ^0^)-b

페도라 업그레이드는 공식 페도라 위키에서 볼 수 있는데요, 방법은 아래와 같습니다.

# 배포판을 업그레이드할 준비를 합니다.
$> sudo dnf upgrade --refresh
$> sudo dnf install dnf-plugin-system-upgrade

# releasever는 업그레이드할 버전을 정해주는 것이 좋은데요, 현재 버전보다 하나 더 높은 버전을 설정해주는 것이 좋습니다. 시간이 많이 걸리니 차라도 한 잔 하시는 것이... 쿨럭..;;;
$> sudo dnf system-upgrade download --refresh --releasever=28

# 마지막으로 시스템을 리부팅하여 변경사항을 반영합니다.
$> sudo dnf system-upgrade reboot

위와 같이 하면 리부팅과 함께 업그레이드가 진행되는데요, 간혹 업그레이드가 실패하고 이전 버전으로 부팅되는 경우가 있습니다. 이런 경우, 아래와 같이 입력하여 강제로 업그레이드를 진행할 수 있습니다.

$> dnf --releasever=22 distro-sync

저는 위와 같이 해서... 폭망했습니다. ㅠㅠ 결국 저는 리부팅 시 서비스 오류가 너무 많이 발생해서 그냥 최신 버전으로 다시 설치했네요. ㅠㅠ

그럼 좋은... 쿨럭..;;;

작년에 아시아 최대 보안 및 해킹 컨퍼런스인 Black Hat Asia 2017 회고라는 제목으로 논문 발표를 하고 온 후기를 작성했는데요, 올해도 운 좋게도 논문이 수락되어 발표하고 왔습니다. ^^;;;

<출처-구글 이미지>


다만... 작년과 다른 점이라면 올해는 논문이 2편이나 수락되어 너무 정신이 없었다는 건데요, 논문 소개를 간략하게 드리자면...

첫 번째 논문은 Intel TXT(Trusted Execution Technology)의 취약점과 관련된 것으로 I Don't Want To Sleep Tonight: Subverting Intel TXT with S3 Sleep에서 보실 수 있습니다. 해당 논문은 보안뉴스에도 소개가 되었는데요, 관련 기사는 보안뉴스-널리 사용되는 tBoot의 슬립모드 통해 인텔 TXT 무력화 가능에서 보실 수 있습니다. (선임 연구원인데... 수석 연구원으로 나와서 갑자기 승진한 것 같은 기분이... 쿨럭..;;;)

<출처-보안뉴스>


두 번째 논문은 작년 Black Hat Asia에서 발표했던 Shadow-Box 의 ARM 버전인데요, ARM 기반의 Raspberry Pi 3에서 ARM TrustZone 기능을 이용하여 커널을 보호하는 기술에 대한 겁니다. 해당 논문은 Shadow-Box v2: The Practical and Omnipotent Sandbox for ARM에서 보실 수 있습니다. Shadow-Box의 경우는 Intel 버전 및 ARM 버전이 모두 GitHub에 공개되어 있는데, Shadow-Box for Intel, Shadow-Box for ARM에서 소스코드를 확인해보실 수 있습니다.

올해는 Black Hat Asia 말고도 세계적으로 유명한 USENIX Security에도 논문이 수락되었는데요, 이 이야기는 다녀온 뒤에 풀겠습니다. @0@

그럼 좋은 밤 되세요 ^^)-b



Arch Linux에서 커널 소스코드 다운로드 하는 법

소싯적에는 한참 Fedora만 쓰다가 최근에는 Debian으로 작업을 많이 했는데, 갑자기 이번에는 Arch Linux에 관심이 생겨서 급하게 설치를 감행하여 살펴보고 있습니다. 배포판을 여러가지 사용하다보면 각 배포판마다 독특한 특징이나 철학을 느낄 수 있는데요, Arch Linux의 경우 이런 부분이 타 배포판에 비해 두드러지는 것 같습니다. ㅠㅠ 설치가 너무 불친절한 게 단점이지만 업데이트가 엄청 빠른 건 장점이네요. 만 하루가 지났는데, 업데이트 된 패키지만 벌써 20개라는... 쿨럭..;;

일단 패키지 빌드 시 프로세서의 코어 갯수만큼 동시에 빌드를 진행하려면 /etc/makepkg.conf 파일에 아래 라인을 추가해줘야 합니다. 안그러면 커널 빌드하는데 시간이 엄청 오래 걸리더라구요. ㅠㅠ

$> sudo vi /etc/makepkg.conf

MAKEFLAGS='-j$(nproc)'

그리고 아래와 같이 순서대로 입력해서 소스코드 다운로드 -> 빌드 -> 설치를 진행할 수 있습니다.

# 소스코드 다운로드를 위해 asp 설치
$> sudo pacman -S asp

# asp로 linux 커널 소스코드 다운로드
$> asp export linux

# 패키지 빌드에 필요한 의존 패키지를 설치하면서 패키지 빌드
$> makepkg -s

# Public Key 관련 오류가 발생하면 아래와 같이 입력해서 등록해줌
$> gpg --keyserver pgp.mit.edu --recv-keys <PUB KEY>

# 빌드가 완료되면 pacman -U <패키지명>.pkg.tar.xz로 설치
$> sudo pacman -U linux-xxx.pkg.tar.xz

항상 최신을 쓴다고 생각하니 뭔가 업데이트 중 문제가 발생할 것 같은 기분이 드는데... 좀 더 써봐야 알 것 같습니다.

그럼 좋은 밤 되세요. ^^

요 근래에 너무 바빠서 업데이트를 진행할 시간도 없었는데, 간만에 오늘 아이맥에 업데이트를 실행했습니다. 기분 좋게 다운로드가 완료되고 리부팅 뒤에 설치가 잘 진행되었는데요, 이때부터 사파리가 비정상 종료되고 앱스토어가 먹통이되는 문제가 발생했습니다. 아... 세상에... 눈 앞이 깜깜한 게 스티브 잡스가 급 그리워지더라구요. ㅠㅠ

터미널로 소프트웨어 업데이트를 찾는 명령어가 있길래 직접 실행해봤더니 아래와 같이 AMSupportURLConnectionDelegate가 중복으로 구현되었다는 오류가 보였습니다.

nonames-iMac:~ noname$ softwareupdate -l
objc[1457]: Class AMSupportURLConnectionDelegate is implemented in
both /System/Library/PrivateFrameworks/OSPersonalization.framework/Versions/A/OSPersonalization(0x1116ba498) and /System/Library/PrivateFrameworks/EmbeddedOSInstall.framework/Versions/A/EmbeddedOSInstall(0x111848748). One of the two will be used. Which one is undefined.
Software Update Tool

Finding available software
No new software available.
nonames-iMac:~ noname$

인터넷을 한참을 뒤지니 맥 OS의 업데이트가 일부만 진행되었을 때 이런 문제가 발생한다고 하길래, 모든 업데이트가 한 번에 들어있는 콤보 업데이트를 찾아서 설치하여 문제를 해결했습니다. >ㅁ<)-b 맥 OS High Sierra의 최신 콤보 업데이트는 High Sierra 10.13.2 Combo에서 찾을 수 있습니다.

이제야 다시 개발을 시작할 수 있겠군요. ^^;;; 다들 즐거운 밤 되세요. ^^


지난주에 존경하는 선배님 중 한 분인 김기오님을 만났습니다. 현재는 독일에 계시는데 우연히 연락이 닿아 제 책(64비트 멀티코어)도 전달해드릴 겸해서 카페에서 뵈었는데요, 대화 내용은 엄청 무거웠지만 어릴 적 동경하던 분을 만나 너무 감격스러웠습니다. ㅠㅠ 제가 소싯적에 어셈러브(www.asmlove.co.kr) 사이트와 이클립스 IDE를 오가면서 부트로더를 구현했는데, 이 때부터 기오님 팬이 되었던 것 같습니다. 당시에 시스템 프로그래머라면 어셈러브를 모르는 사람이 없었다는 소문이...

벌써 15년이라는 시간이 흘렀지만, 여전히 커널 프로그래밍을 하고 계신 기오님을 뵙고 나니 저도 꾸준히 시스템 프로그래머의 길을 가야겠다는 생각이 들었습니다. 사실 마흔을 바라보는 나이가 되니 지인들이 하나, 둘씩 매니저 테크트리로 옮겨타고 있어서 혼자 외톨이가 된 것 같은 느낌을 받을 때가 가끔 있었거든요. 저는 꿈 많은 중년(?!)이라 시스템 프로그래머로 죽는 게 꿈인데, 주변 분위기가 분위기인지라… 그런데 이제는 그런 생각을 할 필요가 없을 것 같습니다.

저와 같은 후배들이 기오님의 등을 보고 따라갈 수 있도록 오래오래 시스템 프로그래머로 남아주시길 바랍니다.
고맙습니다.

ps) 다음 번에 한국에 오실 때는 술이라도 한 잔 기울이면서 더 많은 이야기를 나눌 수 있으면 좋겠습니다.
어이쿠, 그런데 하나뿐인 사진이 너무 딱딱하게 나왔네요. ㅠㅠ


여러분의 꾸준한 관심에 감사드립니다!

많은 분들이 구매해주신 덕분에 "64비트 멀티코어 OS 원리와 구조"가 3쇄까지 올 수 있었습니다.


현재 yes24를 비롯한 주요 서점에 일시 품절로 나와있는 것으로 보아, 열심히 찍고 있는 듯 하고 아직 서점에는 풀리지는 않은 것 같습니다.  ^^;;; 조금만 기다려 주시면 그동안에 제보해주신 오탈자가 모두 반영된 버전을 만나실 수 있을 듯 합니다.


예전에 한동훈 편집자님께서 1쇄만 다 팔려도 괜찮은 거라고 말씀하신게 엊그제 같은 데 벌써 6년이나 지났네요. 6년이 지나는 동안 많은 부분이 바뀌어서 버전업이 필요한 부분도 많은데, 마음 같아서는 개정판에 도전하고 싶지만... 제 마음대로 할 수 있는 부분이 아니기에 언제쯤 가능할런지 시기만 보고 있습니다. ^^;;;;


한동훈 편집자님 뒤를 이어 한없이 부족한 책을 보살펴 주고 계신 송성근 팀장님과 최현우 편집자님께도 심심한 감사의 말씀을 전합니다. 두 분이서 도와주신 덕분에 꾸준히 팔릴 수 있었던 것 같습니다.


책을 쓰기로 마음을 먹은 시점이 지금처럼 시원한 바람이 부는 초가을이었습니다. 항상 이맘때가 되면 자신에게 부끄럼이 없는지 되돌아 보게 되는데요, 오늘의 나는 어제의 나보다 한 발자국 더 나아가야 한다는 좌우명 때문인 것 같습니다.


사실 올 해 초부터 혼란한 시기가 이어지고 있어서 고민이 많았는데요, 어제의 나보다 더 나아가기 위해서 새로운 도전을 해볼까 생각 중입니다. 육아 때문에 힘들긴 하겠지만 문득 지금이 적기라는 생각이 들었거든요. 어느정도 완성이 되면 공개할 날이 올 것 같습니다. ^^;;; 육아 고행에서 좀 자유로워지면 탄력이 붙을 것 같긴한데... 당분간은 시간이 부족해서 거북이처럼 진행해야 할 것 같네요.


늦은 밤, 이제야 겨우 여유가 생겨 감사의 글을 남깁니다. 아마 근래에 쓴 글 중에 가장 긴 글이 아닌가 싶네요. 부족한 책이지만 구매해 주셔서 다시 한 번 감사드립니다. ^^)/

저는 여전히 하고 싶은 일을 하면서 살고 있습니다 - 1편, 2편, 3편, 4편에 이은 5편입니다. 누군가가 "애기 낳고 키우다 보면 꿈은 자연스럽게 멀어지고 퇴물이 되게 되어있어" 하길래 나는 안그래야지 하는 오기로 쓰기 시작한 글인데요, 벌써 5년째 쓰고 있군요. 5년 동안 첫 째 키우랴 둘 째 돌보랴 이것 저것 일이 많았지만, 다행히도 아직 꾸준히 앞으로 나아가고 있고 꿈도 포기하지 않았습니다. ^^;;;

작년에도 꽤나 의미있는 일을 해냈는데, 올해도 나름 의미있는 결과물이 나왔습니다!!

첫 번째로는 논문 발표가 있는데요, 작년에 하드디스크에 묵혀 두었던 가상화 기술을 이용한 운영체제 보호 기술이 글로벌 해킹 컨퍼런스인 Black Hat Asia(Myth and Truth about Hypervisor-Based Kernel Protector: The Reason Why You Need Shadow-Box)HITBSecConf 2017(Shadow-Box: The Practical and Omnipotent SandBox)에 채택되어 발표도 하고 오픈소스로 공개도 했습니다. ^^)-b Intel Architecture Manual 보고 코딩하고 디버깅하느라 엄청 힘들었는데, 결과가 잘 나와서 정말 기분이 좋았습니다. 관련 소스코드는 제 Github인 https://github.com/kkamagui/shadow-box-for-x86에서 보실 수 있으니, 관심있으신 분은 보시고 조언을 주시면 같이 개발하는 걸로... 쿨럭..;;; 혼자 유지하는 게 쉬운 일이 아니더라구요. ㅠㅠ;;; 아참, 그리고 데일리시큐에 기사도 나왔습니다. BlackHat Asia 2017 한승훈∙강정환 연구원, 커널 보호기술 실용화 지평 열어가 그 기사인데요, 기사가 너무 잘 나와서 깜짝 놀랐습니다. (길 기자님 감사합니다. ㅎㅎ)

Black Hat Asia의 Arsenal 세션에서도 소개된 Shadow-box

두 번째로는 커널 커밋이 있는데요, 커널에 보안 취약점을 찾아서 패치한 부분이 있는데, 이번에 4.12 정식 릴리즈에 포함되어 나왔습니다. 릴리즈에 포함된 패치 정보는 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3b2d69114fefa474fca542e51119036dceb4aa6f에서 보실 수 있습니다. 이거 덕분에 그렉 크로아 하트만한테 메일 받았을 때는 폭풍 감동이더라구요. 아직도 그 기분은 잊을 수가 없네요. ㅠㅠ

세 번째는 현재 진행 중인데요, 좋은 결과가 나오면 그 때 포스팅할 예정입니다. ㅎㅎ 둘 째를 재우고 글 쓰는 중인데... 아아... 역시 육아는 쉬운 일이 아니네요. 그렇지만!! 틈틈이 노력해서 내년에도 6편을 써보겠습니다. ^^)/

그럼 좋은 밤 되세요 ^^

이번에 운이 좋아서 제가 만든 가상화 기반 운영체제 보호 기술이 Black Hat Asia와 Hack In The Box Security Conference(HITBSecConf)에 둘다 채택되었습니다. 덕분에 3월에는 싱가포르를, 4월에는 네덜란드를 다녀왔는데요, 출장을 다녀왔더니 일이 엄청 밀려있어서 2개월이 지난 지금에서야 회고를 씁니다. ㅠㅠ 해킹 컨퍼런스는 발표가 필수기 때문에 논문이 채택되어도 발표 준비 때문에 시간이 엄청 드네요. ㅠㅠ

HITBSecConf는 사실 작년에도 다녀왔는데요, 작년에는 Bad USB 관련 연구로 다녀왔습니다. 논문이 심사될 당시에 한참 모바일 디바이스의 충전기 해킹 문제로 시끌시끌할 때였는데요, 때마침 제가 제출한 논문이 소형 디바이스로 베터리, 키보드, USB 카드 리더기에 여러 기능을 추가하는 것과 관련된 것이라 운 좋게 채택이 되었습니다. 이전 논문은 IRON-HID: Create Your Own Bad USB 에서 보실 수 있습니다. ^^;;;

이번에 갔을 때 인상적이었던 부분은 컨퍼런스 관계자가 저를 알아봐주고 먼저 인사를 건내줬다는 것입니다. ㅠㅠ 아아... 별 것 아니지만 왠지 너무 고맙더라구요. ㅠㅠ 덕분에 긴장도 풀리고 발표도 잘 하고 올 수 있었습니다. 제가 발표한 내용은 Shadow-Box: The Practical and Omnipotent Sandbox에서 보실 수 있습니다. ^^

<HITBSecConf 2017 - Shadow-Box: The Practical and Omnipotent Sandbox>

이번 학회에서도 귀인 두 분을 만났는데요, 첫 번째 귀인은 NSHC를 운영하고 계신 허?? 대표이사님입니다. 소싯적에 해커로 이름을 날리시고 현재는 회사를 운영중이신데요, HITBSecConf 2017에서 SCADA 해킹 세션도 운영하셨더라구요. 너무 멋졌습니다. ㅠㅠ)-b

<NSHC의 허영일 대표님(가운데)와 BOB 멘토로 활동중이신 신정훈(singi)님(왼쪽)>

두 번째 귀인은 브라우저 취약점 분석에 달인이신 신정훈(singi)님입니다. 정훈님은 현재 BOB 멘토로도 활동 중이신데요, HITBSecConf 2017에서 펨토셀 해킹 관련 내용을 발표하셔서 인기가 폭발이셨어요. 멋졌습니다. ㅠㅠ)-b

두 달이나 지나서 회고를 쓰지만 왠지 학회 발표날 글을 쓰고 있는 듯한 기분이 드네요. 너무 재미있는 경험이었고 내년에도 또 갈 수 있으면 좋겠네요. 그럼 좋은 밤 되세요. ^^)/

제작년부터 연구하던 결과물이 올해 초에 아시아 최대 해킹 컨퍼런스인 Black Hat Asia와 유럽에서 알아주는 해킹 학회인 HITBSecConf에 동시에 되는 바람에 발표를 두 번이나 하게 되었습니다. ^^; 제 자식과 같은 연구 결과물이 널리 알려져서 좋기는 한데, 발표를 준비하는 과정이 너무 힘드네요. 시간도 많이 들고 말이죠. ㅠㅠ

준비하는 과정이 힘들긴 하지만 학회에서 발표하고 나면 보람있고, 재미난 일들 또한 많이 생기는데요, HITBSecConf는 아직 발표하기 전이라 얼마 전에 다녀온 Black Hat Asia부터 정리를 해볼까합니다. Black Hat Asia는 싱가포르에서 제일 좋은 호텔(인지는 잘 모르겠지만 엄청 좋긴했어요 ^^;;)인 Maria Bay Sands 호텔에서 열렸습니다. 그 왜, 사람들이 하늘을 배경으로 사진 찍는… 최상층에 수영장이 있는 호텔이 바로 Marina Bay Sands인데요… 바로 이렇게 생겼습니다.

<Maria Bay Sands - 출처 구글>

학회 발표 후에 시간을 내서 올라가보니… 정말 눈이 휘둥그레지더라구요. 수영장 끝이 하늘에 닿아있는 듯한 느낌이 들어 좋았고, 높은 곳에서 싱가포르 도시 풍경을 보니 뭔가 세상 고민이 다 하찮아지는 듯한 느낌이 들었습니다. 부자들은 정말 좋겠어요. ㅠㅠ 맨날 그런 좋은 곳에서 세상을 내려다 보고 있을 테니까요.

Black Hat Asia는 Marina Bay Sands와 연결되어 있는 Convention Center에서 진행이 되었는데요, 제가 이번에 오픈소스 도구를 시연하는 Arsenal과 최신 보안 기술을 강당에서 발표하는 Briefing이 다 되는 바람에 좀 바쁘게 하루 하루를 보냈습니다. 하루에 다 몰려있으면 좋을 텐데, 각각 다른 날에 잡히는 바람에 좀 피곤해졌네요. ^^;;; 모두가 도와주신 덕분에 Arsenal과 Briefing 모두 다 잘 마무리했구요, 데일리 시큐의 길민권 기자님께서 제가 발표 모습을 보시고 기사를 너무 잘 써주셔서 온라인 신문에도 났습니다. 제가 나온 기사는 바로 이겁니다. 한승훈∙강정환 연구원, 커널 보호기술 실용화 지평 열어.

<데일리시큐에 소개된 Shadow-box - 출처 데일리시큐>

항상 학회에 가면 사람들로 북적이는데요, 이번에는 글로벌 귀인 두명을 만나는 쾌거를 이룩했습니다. @0@ 한명은 Black Hat USA 본 학회와 CTF로 유명한 DefCon을 설립한 Jeff Moss입니다. 거의 해킹 계의 전설이라고 할 수 있는데요, 같이 간 강정환 연구원이 알려주시 않았다면 모르고 지나칠 뻔 했습니다. 그것도 그럴 것이… 왠 외국인이 유모차를 밀고 있더라구요… 역시 전설도… 애기 아빠가 되면… 어쩔 수 없는 듯… 그래도 어쨌든 사진을 찍었습니다.

<세계 최대의 CTF 대회를 여는 DefCon과 세계 최대의 해킹 학회인 Black Hat의 설립자인 Jeff Moss>

귀인 중 다른 한 명은 Anthony Lai인데요, 홍콩에서 VXCON이라는 해킹 학회를 설립한 사람입니다. HITBSecConf의 리뷰어이기도 하지요. Anthony와 찍은 사진은 이렇습니다.

<홍콩 VXCON의 설립자인 Anthony Lai>

이번에 둘 째가 태어나는 바람에 학회 기간 동안만 있다가 와서 돌아오는 길이 너무 아쉽더라구요. ㅠㅠ 다음에는 좀 더 있다가 오면 좋을 것 같아요. 이제 올 해 마지막 출장이 될 것 같은 HITBSecConf가 남았는데요, 작년에 이어서 두 번째로 초청받은 거라 뭔가 기분이 이상하네요. 작년에는 긴장되고 설레었는데, 지금은 한 번 가봐서 그런지 그냥 편안한 느낌이에요. ^^; 여튼 가서 열심히 하고 오겠습니다.

그럼 좋은 하루 되세요 ^^.

ps) HITBSecConf로 가는 비행기에서 이 글을 적고 있었는데… 발행할 시점에는 이미 HITBSecConf 발표도 다 끝났네요. 흑… 이제 회사로 가야하는 건가.. ㅠㅠ

정말 오래간만에 쓰는 글이네요. ^^;; 그동안 회사일하랴 논문 발표하랴 석사 학위 하랴... 너무 정신없이 보냈습니다. 제 인생에서 이렇게 바빴던 시기가 또 있었나 하는 생각이 들 정도로 말이지요. ^^;;; 그래도 정신을 바짝 차린 덕분에 무사히 모든 일을 마칠 수 있었습니다.

가끔 블로그에도 글을 남겼지만, 작년부터 가상화 기술(Virtualization Technology)를 이용해서 운영체제를 보호하는 연구를 하고 있었습니다. 기존의 Xen이나 KVM, VirtualBox, VMware 등을 사용하지 않고 직접 인텔 가상화 기술 문서를 읽고 구현한 기술인데요, 컨셉은 호스트(Host)와 게스트(Guest) 간에 운영체제를 공유하여 가볍고 효율적인 운영체제 보호를 수행하는 겁니다. 관련 연구로는 SecVisor가 유명한데요, 이 연구의 오버헤드를 극복하고 실제 필드에서 사용가능하도록 만든 것이 제가 한 연구입니다.

Back Hat Asia 2017-Myth and Truth about Hypervisor-based Kernel Protector

<Back Hat Asia 2017-Myth and Truth about Hypervisor-based Kernel Protector>

연구의 핵심은 운영체제보다 한 단계 더 낮은 레벨, 즉 하이퍼바이저 레벨에서 운영체제의 무결성을 보장하는 것인데요. 그림자 놀이(Shadow Play)에서 영감을 얻었습니다. 하이퍼바이저(Light Box)가 게스트 운영체제(Actor)를 투영하면 운영체제 감시자(Shadow Watcher)가 그림자를 보고 이상징후를 탐지하는 아키텍쳐인거죠. ^^

사실 논문 작성은 작년에 완료되었지만, 제가 너무 부족한지라 학술적인 학회에서는 계속 헛물만 들이켰습니다. 그러다가 실용적인 연구를 하는 학회에 눈을 돌리게되었고, 논문을 보강해서 제출한 결과!!! Black Hat Asia 2017에서 논문을 발표하게 되었습니다. ^^)/ 그동안 도와주신 많은 분들께 감사드립니다.

그럼 좋은 하루 되세요 >ㅁ<)/

클린 코드, 소프트웨어 개발의 지혜 등으로 유명한 로버트 C 마틴의 신간입니다. 사실 저자가 이렇게 유명한 사람인지 몰랐습니다. 저는 클린 코드만 알고 있었거든요. 그런데 개발하고, 책도 쓰고, 강의도 하고, 컨설턴트 일도 하고... 내공이 대단한 사람이더군요. ㅠㅠ 이런 저자가 지금까지 자신의 경험을 바탕으로 프로 개발자로 살아가는 방법을 정리한 책이 바로, 클린 코더입니다.

<클린 코더 - 출처 yes24>

몇 가지 인상적인 부분을 들자면... 테스트 자동화의 필요성을 강조하는 부분과 코드는 물과 같아서 변화하고 흐르지 않으면 썩으니 항상 수정하고 더 나은 방향으로 바꾸라는 부분이었습니다. 사실... 지금도 그렇지만 일단 힘들게 동작하는 코드를 만들면 수정하고 싶지 않거든요. ㅠㅠ 코드의 동작을 보장하는 테스트가 완전하다면 믿고 수정하고 테스트하고 반복해서 좋은 코드를 만들 수 있겠지만... 부끄럽지만 현실은 일정이 충분치 못한 경우가 많아서 테스트를 만드는 것이 여의치 않거든요. 그래도 언젠가는 해야할 일이라고 생각하고 있고, 꾸준히 관심을 갖고 고민하고 있으니 곧 도입해볼 수 있는 기회가 있을 꺼라 생각합니다. >ㅁ<)/~

또 인상적이었던 부분은... 제가 말하는 완료 일정이 사실은 확률 분포라는 점이었습니다. 사실 깜짝 놀랐던 대목이었는데요, 보통 특정 일에 대해서 완료 일정을 말할 때 "3일 안에는 끝날 것 같은데... 빠르면 하루 만에도 되구요, 잘 안되서 꼬이면 7일이 걸릴 수도 있어요." 이렇게 하거든요. 근데 이게 확률 분포와 같아서 3일에 확율이 가장 높고 1일은 좀 낮고, 7일에서 약 11일까지 꼬리가 긴 확률 분포였던 것이죠!!(11일은 정확하지 않아요. 책을 보시면 수식으로 표현되어 있으니 한 번 계산해 보시는 것도 재미있을 것 같네요. ㅎㅎ). 앞으로는 이런 사실을 가지고 일정을 이야기 해야겠어요. 이미 정해진 일정을 늘릴 수는 없겠지만, 대신 관리자가 위험에 대비할 수는 있을 테니까요. ^^;;;

분량이 많지 않으니 가을을 맞아 클린 코더를 읽어보시는 걸 추천합니다.

그럼 좋은 하루 되세요. ^^


얼마전에 구름네트웍스의 김성민 대표님으로부터 감사의 메일을 한 통 받았습니다. 64비트 멀티코어 OS 구조와 원리 책의 내용에 영감을 받으셔서 패킷 엔진이라는 RTOS를 만드셨고, 패킷 엔진을 바탕으로 사업을 시작하셨다는 내용이었습니다. 독자 OS를 만드시고 사업을 시작하셨다니... 제 일처럼 반갑고 가슴이 뭉클해졌습니다. 

 
 사실 저도 예전에는 독자 OS를 꿈꿨는데, 범용 OS를 대상으로 하려다보니 디바이스 드라이버 지원 문제가 있어서 중간에 노선을 바꿨거든요. 그런데, 저의 그 꿈을 이룬 분이 계시다니... 대단하다는 생각이 들었습니다. 반성해야겠어요. ㅠㅠ 
 
 나중에 김성민 대표님과 밥 한 끼하고 후기를 올리겠습니다. 어떤 분인지 많이 궁금하네요. ^^;;;; 
 
 그럼 좋은 하루 되세요. ^^)/

 

작년에 거의 1년 정도를 투자해서 만든 가상화 기술 기반 보안 기술을 만들었습니다. 처음에는 프로토타입 수준이었지만 이제 결실을 맺어 릴리즈를 앞두고 있는데요, 항상 그렇듯이 릴리즈를 앞두고 요상한 문제를 만나 디버깅을 하고 있습니다. 

지금 3 주차에 접어 들었는데요, 버그의 현상은 시스템을 종료할 때 가끔 정상적인 종료가 안되고 멈추는 것입니다.

현상

실험 데이터를 바탕으로 종합해보면, 2 코어 4스레드인 CPU가 장착된 장비에서는 약 1/1000의 확률로 종료된 후에 다시 리부팅이 안되고 텍스트 모드 화면에서 커서만 깜빡입니다. 13코어 26스레드인 CPU 2개가 장착된 장비에서는 약 1/20의 확률로 종료가 정상적으로 종료가 안되고 같은 현상으로 멈춥니다. 

원래 systemd가 종료 시에 모든 프로세스를 죽인다는 메시지가 출력되고 종료가 시작되어야하는데, 이 부분 전에 멈춰서 종료가 더 이상 진행이 안되더라구요. ㅠㅠ

원인 분석을 위한 실험, 그리고 해결책...

사실 정확한 원인을 찾지 못했어요. ㅠㅠ 여러 실험을 반복한 결과, 가상화 기술 중 Extended Page Tagle(EPT)를 활성화하고 호스트의 일부 메모리를 매핑하지 않았을 때 문제가 발생한다는 것까지 파악했습니다만... 이 맵핑 안된 메모리 때문에 간혹 종료가 안되는 현상은 이해하기가 어렵더라구요. 

시스템 종료 시에 어떤 이유에서인지 해당 물리 메모리에 접근하는 부분이 있는 것 같은데... 정확하게 찾지 못해서 결국은 메모리를 매핑하지 않은 부분을 읽기 전용으로 매핑해서 우회했습니다. ㅠㅠ 

 기존의 KVM이나 Xen을 안쓰고 처음부터 만들었더니만, 역시 이런 저런 문제가 많이 생기네요. ㅠㅠ 

 다음에는 기존에 있는 걸 최대한 활용해야겠습니다. 그럼 좋은 하루 되세요. ;)


100년만에 쓰는 글인 것 같습니다. ^^)/ 그간 많은 일이 있었는데요, 지난번에 저는 여전히 하고 싶은 일을 하면서 살고 있습니다 - 4편 말씀드렸듯이 5월에 글로벌 컨퍼런스 발표가 잡혀서 정신없이 달려왔습니다. 헥헥... 응원해주신 많은 분들 덕분에 발표를 무사히(?) 끝내고 왔습니다. 외국 애들이 질문하려고 줄까지 서는 바람에 좀 등에 식은 땀이 났던 것만 빼면 말이죠. ^^;;;;

발표만 끝나면 이제 좀 조용해질까 했는데, 이번에는 제가 만든 다른 자식에 버그가 발견되는 바람에 또 정신없이 하루 하루를 보내고 있습니다. 아우, 올해는 그냥 계속 정신없을 것 같네요. 할 것도 많은 데 벌써 6월이라니.... OTL...

외국 보안 학회는 몇 번 참석했는데, 확실히 그냥 들으러 가는 것과 논문내서 스피커로 초청되어 가는 것과는 차이가 있더라구요. 학회를 주체하는 애들이 얼마나 치밀하게 발표 스케줄을 조절하는지도 알게 되었고, 나름 스피커라고 대접도 해줘서 나름 좋았던 것 같습니다. 준비하는 게 엄청 힘들지만 기회가 된다면 다시 한 번 가보고 싶다는 생각을 할 정도로 말이죠. ^^)/

아우, 시차 적응이 안되서 이만 자러가야겠네요.

그날의 기억이 생생한 사진 두 장 올립니다.



그럼 좋은 밤 되세요. ^^

저는 여전히 하고 싶은 일을 하면서 살고 있습니다 - 1편, 2편, 3편에 이은 4편입니다. 사실 작년에는 취미로 하던 일이 업이 되어버려서 그거 하느라 블로깅할 시간도 없었는데요, 그러다보니 블로그를 너무 버려둔 것 같더라구요. ^^;;;; "저는 여전히 하고 싶은 일을 하면서 살고 있습니다" 시리즈를 써야겠다고 생각했습니다. 작년에 여러가지 개인적인 일들(...)이 있어서 사실 더 바쁘기도 했는데요, 그래도 제가 좀 독한 구석이 있어서 그런지 나름대로 의미있는 결과물이 나왔습니다.

그중에 한 가지가 바로 글로벌 해킹 컨퍼런스(HITBSecConf 2016)에서 발표하게 된 IRON-HID 인데요, 개인적으로 이 프로젝트를 시작할 때 오픈소스 하드웨어가 이미 성숙된 단계였습니다. 그래서 이를 이용한 Pen-Testing Tool을 만들고 여러가지 위협을 보여줄 수 있으면, 의미가 있겠다고 생각해서 시작했습니다.

시작은 이렇게 했는데... 사실 결과는 별로 좋지 않았어요 ^^;;; 대부분의 기술 및 위협이 많이 알려진 상태여서 큰 장점이 없었거든요. 1년 내내 컨퍼런스에서 좋은 소식을 듣지 못해서 업그레이드만 계속 했는데, 약 1년 6개월만에 HITBSecConf 2016에서 발표하게 되었습니다. ^^)/~ 그리고 Forbes에서도 소개가 되었는데요, 기사는 Fear My $50 Charger, For It Controls Your Android Phone's Keyboard 에서 보실 수 있습니다.

Forbes에 기사화된 HITBSecConf에서 발표한 내용

다른 한 가지는 가상화 기술(Virtualization Technology)를 이용한 커널 보호 기술인데요, 이건 사실 개인적으로 VT 기술을 봐야겠다고 생각했는데 마침 회사일과도 방향이 맞아서 시작하게 되었습니다. 작년 내내에서 겨우 결과물을 만들긴 했는데, 역시나 좋은 소식을 못 들어서 아직은 하드디스크에 숨겨져 있습니다. 하지만, 계속 업그레이드를 하고 있으니 조만간 좋은 소식이 있을지도 모르겠네요. ^^;;;;

작년을 돌이켜 봤을 때 나름대로 중박은 한 것 같습니다. 올해도 작년만큼만 하면 좋을 것 같네요. 그럼 좋은 하루 되세요. ^^

제가 어쩌다보니(?) 세계 해킹 컨퍼런스 중에 하나인 HITBSecConf 2016에서 논문을 발표하게 되었습니다. ㅠㅠ 완전 가문에 영광이네요. ㅠㅠ 취미로 끄적끄적했던 작업이 이렇게 빛을 보게 되어 정말 기쁩니다. ㅠㅠ 발표 내용은 사실 좀 old school이라 크게 새로울 것은 없는데요, 기존의 기법들을 좀 더 완전하게 만들었다는데 의의가 있지 않나 생각합니다.

발표와 관련 내용은 아래 링크에서 확인할 수 있습니다.

http://conference.hitb.org/hitbsecconf2016ams/sessions/iron-hid-create-your-own-bad-usb-device/

너무 신나네요. 그런 의미에서 오늘은 고기 파티를... 쿨럭..;;;

그럼 좋은 하루 되세요. >ㅁ<)/~

git으로 작업을 하다보면 간혹 다른 프로젝트의 폴더를 내 폴더 아래에 위치시킬 필요가 있는데요, 다른 프로젝트의 폴더 역시 git으로 관리되고 있다면 부모 프로젝트 밑에 자식 프로젝트가 위치하는 형상이 됩니다. 아래와 같이 말이죠. ^^;;;;

내 프로젝트 폴더
|----> 내 프로젝트의 폴더 및 파일들...
|----> 다른 프로젝트 폴더
        |----> 다른 프로젝트의 폴더 및 파일들...

이때 아무 생각 없이 git add로 다른 프로젝트의 폴더를 추가하면 내 프로젝트의 git과 다른 프로젝트의 git이 부모 자식 관계로 연결됩니다. 만일 부모 자식 관계가 아니라 완전하게 내 프로젝트에 포함시키고 싶어서 다른 프로젝트 폴더 내에 있는 .git 폴더를 삭제하고 나면 다른 프로젝트의 파일을 추가하거나 변경했을 때 아래와 같은 오류가 발생합니다. ㅠㅠ

$> git add "다른 프로젝트 폴더/파일.c"
Git: fatal: Pathspec is XXX in submodule

해결 방법은 아주 간단한데요, 부모 폴더로 가서 아래와 같이 cache를 삭제하고, 다시 프로젝트를 추가하면 됩니다.

$> git rm --cached "다른 프로젝트 폴더"
$> git add "다른 프로젝트 폴더"

아우, 깜짝 놀랐네요.

그럼 좋은 하루 되세요 ^^

+ Recent posts