Posts

Malicious postscript code in hwp

I found a hwp(Hangul word processor) file which contains malicious postscript code. I take some analysis notes for my memo. Malicious postscript code is as following. /X240 def %kshvudgsjsye3 0 1 X240 length 1 sub % %kshvudgsjsye3 {/Y31 exch 1 2 and pop def %kshvudgsjsye3 X240 dup Y31 get Y31 15 and /Y104 8 def get xor Y31 exch put} for X240 cvx % exec I’ve googled and found some coding rules. ・Anything following a % on a postscript program line is ignored by the interpreter. ・initialize variable i with value 0 /i 0 def ・set each element of array ar to value n 0 1 ar length 1 sub {ar exch n put} for ・ exch     Exchange the top two values of stack. ・ dup      Duplicate the top element of stack. ・logical ' and ' operator. a&&b a b and ・ <hexadecimal string> cvx          makes string executable ・ <hexadecimal string> cvx exec    ...

Ubuntu 16.04 + Qemu + Raspberry Pi image triggered kernel panic

I tried to boot Raspbian OS on Qemu but failed!! Ubuntu 16.04 + Qemu + Raspberry Pi image Freeing unused kernel memory: 176K (c0530000 - c055c000) Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004 I googled it and resolved.. It need to edit raspberry pi's files in .img /etc/fstab by commenting out mmcblk entries and /etc/ld.so.preload old entries. OK, lets check .img file. umiushi@umiushi-VirtualBox:~/Desktop/armv6_stretch$ file raspbian-stretch.img raspbian-stretch.img: DOS/MBR boot sector; partition 1 : ID=0xc, start-CHS (0x0,130,3), end-CHS (0x7,165,30), startsector 8192, 114688 sectors; partition 2 : ID=0x83, start-CHS (0x7,165,31), end-CHS (0x18e,97,19), startsector 122880, 6277120 sectors Then, trying fdisk command. Which sector should be mounted.. umiushi@umiushi-VirtualBox:~/Desktop/armv6_stretch$ fdisk -l ./raspbian-stretch.img Disk ./raspbian-stretch.img: 3.1 GiB, 3276800000 bytes, 6400000 sectors Units: sectors of 1 * 512 = 512 by...

MBR debugging with Bochs

Image
I've tried Bochs for debugging MBR which is infected Petya just for fun. First of all, prepare disk image. $ dd if=xx.raw of=petya.img bs=512k count=20 (I've run petya on VM and convert .vmdk image into .raw image.) Setup bochsrc file like following. romimage: file=$BXSHARE/BIOS-bochs-latest vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest megs: 16 ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 ata0-master: type=disk, path="petya.img", mode=flat, cylinders=1, heads=16, spt=63 boot: disk vga: extension=vbe mouse: enabled=0 log: nul logprefix: %t%e%d panic: action=fatal error: action=report info: action=report debug: action=ignore Wrong cylinders, heads, spt value may be a glitch on setting up debugging environment. Now, my petya.img size is 0x7E000 bytes. (Disk image size must be multiples of 512.) 0x7E000 = 516,096 = 512*1008 It is addressed by following formula. img size = cylinders * heads * spt * 512 516,096 = 1 * 16 * 63 * 512 You need ...

Petyaのドクロのコードが見たい

Image
いよいよMBRの中のコードを覗いてみる…。 のだけどどうやって??? IDA proってツールを使います。 ベルギーのhex-raysって会社が出しているdisassembler。 フリーウェア版でも十分使える。 ライセンス版は2000ドル(!)くらいするのだが、x64も読めちゃう。 supports more than 50 processor families なんて書いてあるが、世の中にはそんなにプロセッサの種類あるんだね草。 よりマニアックなcpu instructionが見たいぜ!!という諸兄には必携かと。 https://www.hex-rays.com/products/ida/support/download_freeware.shtml 保存したpetya.imgの拡張子を.comに変えてから読み込むと捗る。 アセンブラの命令を一個一個解説していくことは困難なためさわりだけでオナシャス。。 bochsでステップ実行しながら、表示を比較していくとよい。 http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html 以下のコードで一文字づつ画面に書き込み。 https://en.wikipedia.org/wiki/INT_10H によると、、Teletype output てので出力してるみたいだね。 seg000:4C26 WRITE_CHAR_ANDADVANCE_CURSOR proc near ; CODE XREF: WRITE_CHAR_ANDADVANCE_CURSOR_0+E p seg000:4C26 ; sub_14C54+57 p ... seg000:4C26 seg000:4C26 arg_0 = byte ptr 4 seg000:4C26 seg000:4C26 55 push bp seg000:4C27 8B EC mov ...

BochsでMBR debugging

Image
今回は前回取り出したPetyaに書き換えられてしまったMBRをBochsで動かしてみよう。 https://ja.wikipedia.org/wiki/Bochs Bochsはここから入手できる。 http://bochs.sourceforge.net/getcurrent.html Bochsも前に出てきたVMware同様PCエミュレータなのだけど、 こいつはMBRのdebugができてしまうんだ。 OSが起動するより前のコードを追えるってわけだね。 そりゃ面白そうだ~笑 キモは設定ファイルの書き方くらいかなと。 サンプルの設定ファイルがあるのでチェックしてみて。 Bochs-2.6.9\bochsrc-sample.txt   多分もっとシンプルにもできるんだと思うんだけど、、 筆者のはこんな感じ。 romimage: file=$BXSHARE/BIOS-bochs-latest vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest megs: 16 ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 ata0-master: type=disk, path="petya.img", mode=flat, cylinders=1, heads=16, spt=63 boot: disk vga: extension=vbe mouse: enabled=0 log: nul logprefix: %t%e%d panic: action=fatal error: action=report info: action=report debug: action=ignore   こいつをファイル名を変えてbochsrcとして保存。.txtもいらない。 Bochs-2.6.9\bochsrc 設定ファイルのポイントは赤文字のところ!! path="" には取り出したMBRのパスを記入する。 そして、もうひとつ重要なのが、Bochsに読み込ませるディスクイメージのサイズは512の倍数でなければいけないんだ。 どういうこっちゃ??なのだけど、、 切り出したMBRをバイナリエディタで読み...

Petyaと遊ぼう(4)

Image
さて、いつぞやにpetyaを実行したVMのイメージは残っているだろうか??(起動してもドクロがピカピカするやつ) 今回はVMイメージからpetyaが書き換えてしまったMBRの取り出しをやってみたい。 こんごのさぎょうのながれ VMイメージをrawフォーマットに変換(vmdk統合必要な場合は先にやっとく) ddでMBRを切り出し bochsでドクロをpkpkさせる MBRのコードを見てwktkする 解散 まずは、、 仮想ディスクイメージである.vmdkからrawフォーマットに変換する。 https://eelsden.net/blog/q1lk2m/qfks6b VMイメージのハードディスクサイズがデカめだと、rawに変換したときにクッッッッソ巨大になるので注意してくれ。 変換エラーできませんエラーが出たら疑ってみて。実験環境のハードディスク容量が十分にあるか。 数GBだとたぶん足りん。できたら数百GBはほすぃとこ。 またrawフォーマットに変換する前に、、 ファイル名が..-s00x.vmdkこんな感じになってるときは.vmdkをひとつに統合しておく必要がある。 Windows 7-000003-s007.vmdk Windows 7-000003-s006.vmdk Windows 7-000003-s005.vmdk .... vmware-vdiskmanagerっていうのでできるんだが、vmware playerには入ってないのね。。 ので別途vmwareのサイトから取ってくる必要があります。 https://server-setting.info/blog/vmware-disk-file-marge.html rawフォーマットに無事変換できただろうか? ddコマンドで必要な部分だけ切り出そう。 http://www.atmarkit.co.jp/ait/articles/1711/30/news027.html こんな感じで。 dd if=xx.raw of=petya.img bs=512k count=20 ddなんてコマンドねぇぞ!!? ってこともあるかもしれん。cygwinを入れるかWindows用のddを取ってくるかlinux系OSを持ってくるかお任せします。 h...

Petyaと遊ぼう(3)

💀:PCどうなったん? MBRが書き換えられてOSが起動しなくなった。 またファイルを暗号化されてしまっている。 💀:なんでこんなことするん? ファイルを人質に取って身代金をせしめるのが目的のようだ。 💀:儲かるん? これがどうも結構儲かるらしいんだ。。 過去のランサムウェアの例では身代金で何百億もの金を集めた例が存在する。 http://www.security-next.com/063951 💀:直るん? 「無理」※だ。 例えば数字4桁の鍵なら0000~9999まで全部試せばいつかは開くが、 petyaはファイルの暗号化にAES128やsalsa20という暗号化技術が用いられている。 計算が得意であるコンピュータを使っても、復号に何十年、何百年とかかる代物だ。 今回のサンプルに至っては、暗号化に使った鍵(ランダムに生成された)を捨てちまうため暗号化した側も元に戻せないんだとさ! つまりファイルを復号するのはまず不可能というわけだ。。 https://blog.trendmicro.co.jp/archives/15353 💀:でも鍵買えって、、 鍵買っても直る保証はないよね。。上記の通り鍵捨てちゃうやつもいるし。 今回のpetyaの例では攻撃者とのやりとりに使われる予定だったメールアカウントが速攻でBANされたため、 金を払ったところで攻撃者側は誰が払ってくれたかわからんし、被害者側は攻撃者と連絡つかんし、、な状態だったらしい。 そもそも直してくれたかもわからんよね。 💀:どうすりゃいいん? 覆水盆に返らずインジャパニーズっすわ。。。 よく言われることとして、、 重要なファイルはバックアップ取っておこう ウイルス対策やっとこう メールの添付ファイルはむやみに開かないこと OSやソフトウェアの脆弱性を攻撃して勝手に入ってくることもあるため、バージョンアップやパッチの適用はこまめにやろう とかですかね。。。 さて、次回はドクロピカピカどうやってるかを調べて行くぞ~ 本線の方が脱線してる感じあるなこれ(;´Д`) ※初期に登場したpetyaに対してはスーパーハカーがファイルの復号方法を発見公開している。 https://blog.kaspersky.co.jp/pe...