« 2016年3月 | トップページ | 2016年11月 »

2016年4月

UNIXTime(数値形式)と DateTime(文字列 YYYY/mm/dd HH:MM:SS)形式の相互フォーマット変換の方法

UNIXTime(数値形式)と DateTime(文字列 YYYY/mm/dd HH:MM:SS)形式の相互フォーマット変換の方法

                              
 

キーワード: UNIXTime, UNIX時間, エポック時間, 時刻フォーマット変換、n時間後, bash, シェルスクリプト, date

このエントリーをはてなブックマークに追加

 

1. 概要

 

UNIXTime(UNIX時間) は Unix/Linux系OSでよく用いられる時刻表現で、1970年1月1日0時0分0秒からの経過秒数のことです。UNIX時間は、UTC(世界協定時刻)になっているので、JST(日本標準時刻)に変換するには+9時間する必要があります。

 

UNIXTime は数値なので計算しやすく、経過時間や何時間前、数日前などの計算をするのには便利ですが、人の目でみて何日なのか判断するが難しいです。このため、時刻計算はUNIXTimeの数値で行い、表示部分には文字列のDateTime形式を使うことが多いです。

 

2. UNIX/Linux の date コマンドを使った方

 

(1) UNIXTime から DateTime 形式にフォーマット変換

 
   

$ date --date "@1460295997"      
Sun Apr 10 22:46:37 JST 2016

 

(2) DateTime から UNIXTime 形式にフォーマット変換

 
   

$ date --date "2016/04/10 22:46:37" +%s      
1460295997

 

 

 

3. Perl の Time::localtime を使った方法

 

(1) UNIX時間の数値から文字列日付形式に変換(Perl)

 
   

$ perl -MTime::localtime -e '$TIME=0x498c8910; $tm=localtime($TIME); printf("%d/%02d/%02d %02d:%02d:%02d\n",$tm->year+1900,$tm->mon+1,$tm->mday,$tm->hour,$tm->min,$tm->sec);'

   

2009/02/07 04:01:36

 

(2) 文字列の日付形式から数値のUNIX時間に変換(Perl)

 
   

$ perl -e 'print 0x498c8910';

   

1233946896

 

 

 

4. n時間後の時刻を得る方法

 

date コマンドを使うと簡単に n 日後や、n時間後などを得ることが出来ます。また任意のフォーマットを指定することが可能です。

 

(1) 現在から n日後を得る方法

 

date --date "n days"

 

date コマンドの date オプションで n days の n に数値を入れます。1日後を得る例です。

 
   

$ date      
Sun Apr 10 22:51:09 JST 2016      
$ date --date "1 days"      
Mon Apr 11 22:51:12 JST 2016

 

(2) 現在から n 日前を得る方法

 

date --date "n days ago"

 

date コマンドの date オプションに n days ago と指定します。n部分に数値を入れます。1日前を得る例です。

 
   

$ date      
Sun Apr 10 22:53:04 JST 2016      
$ date --date "1 days ago"      
Sat Apr  9 22:53:08 JST 2016

 

(3) 指定時刻から n 日後を得る方法

 
   

$ date --date "2016/04/10 22:54:00 1 days ago"      
Sat Apr  9 22:54:00 JST 2016

 

(4) 指定時刻から n時間後を得る方法

 
   

$ date --date "2016/04/10 22:54:00 1 hours"      
Sun Apr 10 23:54:00 JST 2016

 

(5) 指定時刻から n時間前を得る方法

 
   

$ date --date "2016/04/10 22:54:00 1 hours ago"      
Sun Apr 10 21:54:00 JST 2016

 

4. 関連リンク

 

 

 

 

                              

TeraTerm のマクロ機能でSSHサーバでのコマンド処理を自動化する自動化する方法

TeraTerm のマクロ機能でSSHサーバでのコマンド処理を自動化する方法

teraterm   

スポンサーリンク

 

キーワード: TeraTerm、SSH、自動ログイン、自動化、サーバ運用、ログフォーマット

このエントリーをはてなブックマークに追加

 

 

 

1. 概要

 

Windows のSSH クライアントソフト TeraTerm のマクロ機能を使って自動でSSHログインしてサーバでのコマンド処理などを自動化する方法を紹介します。

 

server1 に公開鍵認証でログイン後、自動的に server2 にSSHログインするマクロの例です。TeraTerm接続ログを日付形式(YYYYmmdd-HHMM)で記録します。このマクロを使うことで、自動的に対象マシンにSSHでログインして、コマンド等を実行して結果を取得するなどの処理を自動化することが出来ます。

 

 

2. 自動SSHログインするTeraTerm マクロの概要

 
       
  1. ログファイルフォーマットの設定(YYYYmmdd-HHMM.log)
  2.    
  3. ログ取得開始
  4.    
  5. server1 へ SSH ログイン(公開鍵認証、パスフレーズを聞いてくる)
  6.    
  7. server1 から server2 へSSH ログイン(パスワード認証、パスワード自動送信)
 

 

 

3. TeraTerm マクロの例

 

スポンサーリンク

 

   

getdate curDate      
strcopy curDate 1 4 Year      
strcopy curDate 6 2 Month      
strcopy curDate 9 2 Day      
gettime curTime

   

strcopy curTime 1 2 Hour      
strcopy curTime 4 2 Min      
strcopy curTime 7 2 Sec

   

strconcat logfile 'c:\'      
strconcat logfile Year      
strconcat logfile Month      
strconcat logfile Day      
strconcat logfile '-'      
strconcat logfile Hour      
strconcat logfile Min      
strconcat logfile '.log'

   

connect 'SEREVR1:PORT /ssh /2 /auth=publickey /user=USER1 /ask4passwd /keyfile=id_rsa'

   

logopen logfile 0 1

   

wait '[USER1@SERVER1'      
sendln 'ssh SERVER2'      
wait USER2@SERVER2's password:      
sendln 'password'

   

sendln '自動実行したいコマンドやバッチ'

 
       
  • SERVER1:PORT 一段目のSSHサーバとポート番号
  •    
  • USER1 一段目のSSHサーバのログインユーザ名
  •    
  • id_ras 一段目のSSHサーバのログインユーザの秘密鍵
  •    
  • SERVER2 二段目のSSHサーバ
  •    
  • USER2 二段目のSSHサーバのログインユーザ名
 

 

 

4. TeraTerm マクロの実行

 

TeraTerm のマクロファイルは、拡張子が .ttl となっています。ttmacro.exe と関連付けされていれば、マクロファイルをダブルクリックすれば実行されます。    
実行できない場合は、%PROGRAMFILES%\teraterm\ttpmacro.exe と関連付けを行ってください。

 

スポンサーリンク

PETYA ウイルス - MBRを書き換えてPCを起動不能にするランサムウェア

PETYA ウイルス - MBRを書き換えてPCを起動不能にするランサムウェア

 

スポンサーリンク

 

キーワード: PETYA、ウイルス、マルウェア、ランサムウェア、復元、復号、復旧、decrypt、MBR、MFT、ransomware, Virus

このエントリーをはてなブックマークに追加

 

目次

 
   

1. PETYA ウイルスとは

   

2. PETYA ウイルス感染時の画面

   

3. 書き換えられたMBR、MFTなど

   

4. ファイルの復旧について

   

5. 暗号化されたディスクの復号方法

 

1. PETYAウイルスとは

 

PETYAウイルスは、感染するとMBRMFT(マスターファイルテーブル)を上書きしてPCを起動不能するランサムウェアの一種です。PETYAウイルスを実行すると、Windowsが急に落ちて、システム再起動が発生します。PCを起動するとドクロマークの絵を表示した後、ハードディスクを軍事レベルのアルゴリズムで暗号化した、復号するための鍵を購入するために手続きをするように要求する文書を表示します。要求額は約0.9 BITCOINになっていました。

 

PETYA ウイルスに感染させてハードディスクの内部を確認したところ、ハードディスク全体が暗号化されている訳ではなく、MBRとMFTが部分的に書き換えられているだけのようでした。ファイルのデータは暗号化されずに残っているようです。また、軍事的なレベルのアルゴリズムで暗号化と書いてありましたが、MFTの書き換えはXOR処理のように見えます。

 

PETYAウイルスのプログラムコードを解析した訳ではなく、ハードディスクの一部を調査しただけなので正確ではないかもしれませんが、ハードディスク内のファイルデータは残っているようです。しかし、MFTが書き換えられているので、ファイル名やデータが格納されている位置(クラスタ番号)などがわからないので、ちゃんと復旧するのは大変そうです。foremost などのデータカービングソフトを使えば、ヘッダ・フッダが規定されているものについては、ある程度自動で復元できそうです。MFTレコード内に直接データが保存される小さなサイズのファイルに関しては、データが書き換えられてしまっていると思います。

 

NTFS 以外のファイルシステムの場合どうなるのかは調べられていません。

 

 

2. PETYA ウイルスに感染時の画面

 

スポンサーリンク

 

① PETYAウイルスを実行すると、強制的に Windows が落ちてシステム再起動がかかります。

 

petya_ico

 

②PCが立ち上がると、リカバリのための CHKDSKを実行しているような画面が出てきます。

 

PETAYA-1

 

③ ②が終わると、赤白点滅させながらドクロマークの絵を表示します。

 

PETYA-2PETYA-3

 

④ ハードディスクを暗号化したこと、復号するための鍵の購入方法が表示されます。

 

PETYA-4

 
   

You became victime of the PETYA RANSOMWARE!

   

The harddisks of your computer have been encrypted with an millitary grade encryption algorithm. There is no way to restore your data without a special key. You can purchase this key on the darknet page shown in step 2.

   

To purchase your key and restore your data, please follow these three easy steps:

   

1. Download the Tor Browser at “https://www.torproject.org/”. If you need help, please google for “access onion page”.

   

2. Visit one of the following pages with the Tor Browser:

   

   http://petyaXXXXXXXX

   

   http://petayaXXXXXXX

   

3. Enter your personal decryption code there:

   

   XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX…

   

If you already purchased your key, please enter it below.

 

 

3. 書き換えられたMBR、MFTなど

 

スポンサーリンク

 

 

暗号化されたファイルの復旧する 3 つの方法を紹介します。

 

①第0ブロック MBRの書き換え

 

mbr

 

左が正常なMBR、右がPETYAに書き換えられたMBRです。オフセット 446バイト以降のパーティションテーブルは書き換えられていませんが、前半のブートストラップローダー部分が書き換えられていることがわかります。

 

 

 

②第1ブロックから第33ブロック目の書き換え

 

block1-33

 

第0ブロック目のMBR以降、第1ブロックから第33ブロック目は通常 0x00 になっていますが、PETYAウイルスによって 0x07 で XOR されているように見えます。XORとは限りませんが。

 

 

 

③ 第34ブロック目~第49ブロックまでの書き換え

 

推測ですがPETYAウイルスに感染後に表示されるドクロマークや案内を表示すると思われるプログラムが入っていました。

 

 

 

④ 第50ブロック目以降から第1パーティション直前まで

 

特に書き換えはないようです。

 

 

 

MFT(マスターファイルテーブル)の書き換え

 

MFT-Mirror

 

左が正常なMFTレコードの一部(MFTMirrのレコード)です。右はPETYAウイルスで書き換えられたMFTレコードになります。正常時の0x0の部分からキーを推測して XOR すると一部は戻せました。途中でパターンが変わるので、そのパターンをプログラム解析で確認できれば復号できそうです。

 

時間があればもう少し詳しく調べてみたいと思います。

 

 

 

4. ファイルの復旧について

 

MBR、MFTは書き換えられていますが、ファイルデータはそのまま残っているようなので、試しにファイルが取り出せるか確認してみました。

 

感染前の C:\Windows\notepad.exe が クラスタ番号 169258 から 44 クラスタ分あることが分かっていたので、感染後のハードディスクから該当部分を dd コマンドで取り出してみました。

 
   

# dd if=infected-disk.dd skip=`expr 169258 * 8 + 2048` count=`expr 44 * 8` > notepad.dd

 

notepad.exe は 179,712バイトなので、末尾の余計な部分をバイナリエディタで削って、MD5ハッシュ値を確認します。

 
   

# md5sum notepad.dd      
d378bffb70923139d6a4f546864aa61c  notepad.dd

 

感染前の C:\Windows\notepad.exe の MD5 のハッシュ値である  d378bffb70923139d6a4f546864aa61c と一致しました。少なくともこの部分のファイルデータは書き換えられてないようです。

 

 

5. 暗号化されたディスクの復号方法

 

暗号化されたディスクを復号するための解除キーを解析してくれるサイト(PETYA-PAY-NO-RANSOM)が公開されています。

 

Petya Ransomware's Encryption Defeated and Password Generator Released http://www.bleepingcomputer.com/news/security/petya-ransomwares-encryption-defeated-and-password-generator-released/

 

PETYA-PAY-NO-RANSOM(https://petya-pay-no-ransom-mirror1.herokuapp.com/)

 

上記の PETYA-PAY-NO-RANSOM を利用した PETYA RANSOM の解除を試してみました。暗号化は解除でき、正常にWindowsを起動することが確認できました。試してみた手順を紹介します。

 

PETYA-PAY-NO-RANSOM に下記①②の情報を貼り付けて「Submit」ボタンを押すと、解除キーが表示されます。このキーをPETYA RANSOMWARE のキー入力画面に、入力すると暗号化が解除されて正常にWindowsを起動することができます。

 
   

① 暗号化されたハードディスクのセクタ55 のデータをBASE64エンコードした情報

   

② 暗号化されたハードディスクのセクタ54 のオフセット 33 から 8バイト分のデータをBASE64エンコードした情報

 

上記①②の情報を取得するためのツール Petya Sector Extractor が下記URLで提供さてれています。  Windows 上で動作するGUI プログラムです。

 

http://download.bleepingcomputer.com/fabian-wosar/PetyaExtractor.zip

 

今回は、別途 Windows マシンにHDDをつなぎかえるのが面倒だったため、上記 Petaya Sector Extractor は使わずに、Bootable Linux CD でブートして dd コマンドと Base64 コマンドで取得する方法にしました。

 

 

(1) Bootable Linux CD で PETYA RANSOMWARE に感染したマシンを起動します

 

Bootable Linux なら何でも良いのですが、今回は Deft Linux を使いました。

 

 

(2) Linux が起動したら下記のコマンドを実行して①②の情報を取得します

 

感染したマシンのハードディスクが、デバイス名 /dev/sda として認識されています。この /dev/sda から該当データを取得することになります。下記、具体的なコマンドになります。

 

①の暗号化されたハードディスクのセクタ55 のデータをBASE64エンコードした情報を取得

 
   

deft ~ % dd if=/dev/sda bs=512 skip=55 count=1 2>/dev/null | base64      
/cc3NxMWNzenSDc3rzs3N+37Nzfq/zc3baU3NyfGNzc3BTc3N8g3N1RtNzdJoTc3K6M3N6tgNzft      
1zc33P03N/7HNzeTFjc3p7Q3N6/9NzftvDc37P83N+3lNzcn2Dc3NTU3N7c3NzdUbTc3SaI3N6um       
NzerZDc3bSg3N9z9Nzf9xzc3E1Y3N6cMNzcvfTc37fw3N+r/NzdtZTc3J8Q3NzMHNzc3iDc3Um03       
N8miNzerIzc3q343N+36Nzff/Tc3/cc3N5NVNzenoDc3r7s3N+07Nzfq/zc3bSU3NyfGNzcxMTc3       
N/c3N1JtNzdJIjc3K6M3N6tkNzdtqDc33/03N/7HNzcT1Tc3pxQ3N687Nzdtujc37P83N+0lNzcn       
2Dc3PzU3N7cINzdTbTc3yWI3N6ulNzerfDc37Tk3N9/9Nzf8xzc3ExY3N6cONzevfDc3bTs3N+r/       
NzdtZTc3J8I3Nz0HNzc3CDc3VW03N0nhNzcrpTc3q2A3N226Nzfe/Tc3/cc3N5NWNzenADc3L/03       
N+38Nzfq/zc3bWU3NyfENzc7PTc3N0g3N1NtNzdJojc3qyM3N6t+Nzdt+Tc33/03N/vHNzeTFjc3       
pww3N688NzftOzc36v83N20lNzcnwjc3OT03NzfINzdSbTc3SeE3NyulNzerYDc3bbo3N979Nzc=

 

②の暗号化されたハードディスクのセクタ54 のオフセット 33 から 8バイト分のデータをBASE64エンコードした情報を取得

 
   

deft ~ % dd if=/dev/sda bs=1 skip=`expr 33 \+ 512 \* 54` count=8 2>/dev/null | base64      
LSgLXoh++aQ=

 

上記コマンド結果を USB メモリや SSH などのネットワーク経由で取得し保存しておきます。

 

 

(3) (2) で得た情報を「PETYA-PAY-NO-RANSOM(https://petya-pay-no-ransom-mirror1.herokuapp.com/)」のフォームに貼り付けて Submit します

 

decrypt1

 

しばらくすると解除キーが表示されます。ここでは Your key is: の行にある「XxNxRx3xExTxTxsx」が解除キーになります。

 

decrypt2

 

 

(4) (3)で表示された解除キーを PETYA の画面に入力します

 

decrypt4

 

解除キーを入力すると、復号処理が実行されます。

 

decrypt5

 

しばらくすると復号処理が完了すると、マシン再起動の表示が出ます。

 

decrypt6

 

再起動すると正常にWindowsが起動します。

 

 

 

スポンサーリンク

« 2016年3月 | トップページ | 2016年11月 »

記事一覧

スポンサードリンク


Twitter


無料ブログはココログ

ブログ検索