その昔、ハッキングと言えば有償ソフトを無償で利用できるようにプログラムを改ざんしてしまう事を指していた。
インターネットが普及すると、いつの間にかWEBサーバー等から本来閲覧できないはずのデータを取得することを指す様になった。
今のメジャーなソフトはサブスクリプション化されているため、インターネットでの認証が必要だ。
昔はシリアルナンバーを入力する必要があったが、今はメールアドレスとパスワードが主流である。
認証システムは強固なものの、メールアドレスとパスワード管理はユーザー頼みだ。仮に流出させると不利益を被るのはユーザー側な訳で、ソフトウェアの不正利用はこのシステムによってかなり減った。
対して昔はモラルが著しく低く、ソフトウェアはコピーして使う事が当たり前だった。
企業においても、1ライセンスだけ購入して使い回していた物である。インターネット等にライセンス確認をする事は無いため、いくらでもコピーできてしまった。もちろんサポートも、この1ライセンスあるため、サポート側も確認しようが無く怪しいと思っても対応するほか無かった。
インターネット接続を前提としてなかったため、不具合があってもパッチプログラム等の配信はほとんどなく、あってもよほどの時だけだった。
結局購入してから捨てるまで全く同じプログラムが動き続けたので、一度シリアルナンバーが流出してしまうと、対応方法が無くどうしようもなかった。
そのためか、当時多くの一般の方がハッキングというと何とかしてシリアルナンバーを取得するものだと思っていた。
しかしながら実際は違う方法をとる事が多かった。
モラル的な所はおいて、当時は不正利用の目的では無く研究のためにプログラムの改ざんを行うことは問題はなかった。たぶん今でも同じだ。
所謂ハッカーの方はシリアルナンバー生成のアルゴリズムの解析をあまり行わない。シリアルナンバー確認のサブルーチンをバイパスして、常にライセンス承認済みになるよう直接EXEファイルをバイナリエディタ等で書き換える。その方が時間もかからず手っ取り早い。
巷でシリアルナンバーが流出しているが、どこかの会社のボリュームライセンスだったり、システム管理者が大量入力できるよう意図的に用意されていた番号だったりする。そのためハッキングしたわけでは無く、意図的な情報漏洩でしかない。
プログラムを改ざんするとなるとアセンブラの知識は必須で、少なくともこの技術が無いと高度なコンピューターウイルスは作成できないし、防御はもっとできない。
現在のWEB系のセキュリティだとバッファオーバーフロー攻撃なんかが相当するだろう。
実行ファイルの構造やOSの高度な知識も求められるため、自身の腕試しには丁度よかった。ちなみに興味があってもセンスが無いと足切りされるレベルで、人によっては一生たどり着けないレベルだ。
Windows95が発売されてインターネットが普及すると、ダウンロードしてインストールが普通になってきたため、シェアウェアが発展した。
一般的には個人もしくは小規模な会社で「このソフトが便利だと思えば、みんなで開発料金をシェアしてください」というものだ。
代表的なのは「秀丸エディタ」だろうか?
そういえば自分もレジストしてから30年位経つ。当時から既にシリアルナンバーが流出しており自分も知っていたのだが、登録後に返ってきたメールは流出したシリアルナンバーそのものだった。ちなみに未だに有効なのであるが、作者は気にしていないのであろう。
そのシェアウェアのシリアルナンバー解析を幾度となく行ったものだ。
一番簡単だったのは、シリアルナンバーがそのままEXEファイルに埋め込まれていた。データエリアを見ると、「あっ?これじゃね?」と思った文字列そのものだった事があった。
プログラム的には同じ文字列だったらレジスト済みとするというものなので、見る人が見れば瞬間に分かってしまうのである。少なくともシリアルナンバーに何らかの暗号化をして組み込まなくてはならないのだが、EXEファイルの構造を知らなかったのだろう。
ちなみに後のバージョンアップで適切に暗号化するようになっていた。
難しかったのは、動作中に何度も登録済みのシリアルナンバーの確認を行う物だった。不正を見知するとプログラムが動かなくなるし、意図的に別々のサブルーチンで確認するため1カ所修正してもダメなのである。デコイのサブルーチンや、実行時に暗号化されたプログラムがメモリ上に展開されるなど、ウイルスと変わらないような動きだった。
そのテクニックは、色々と大変勉強になった。全くいらないソフトだったが、解析後にお礼としてレジストした。
こうしたテクニックを身につけられたため、自身のスキルアップになったのは事実だ。セキュリティあたりの知識に応用するれば今でも全然役に立っている。
そんなある日、仕事でライセンス管理のソフトを提供している会社と協業することとなった。
シリアルナンバーの管理をアウトソースして、その会社のシステムを使うと簡単に行えるというものだった。
それなりに業界でシェアを取っており、強固なプログラムで守られていた。
契約締結後に技術仕様書を公開頂いて色々と確認てみたのだが、ふと魔が差した。
このソフトをハッキングできないだろうか?と。
そこで仕様書をくまなく確認したところ、たった1カ所だが仕様的に致命的なバグがあることに気がついた。
実行ファイルの一つにDLL(ダイナミックリンクライブラリ)と呼ばれるファイルがある。これも実行ファイルの一部なのだが、多くのプログラムから呼び出されるため、共通化のために別出しになったものだ。
プログラムにバグや機能追加をした場合、このDLLだけを入れ替えると、利用している全てのプログラムが自動でバージョンアップされるメリットがある。
逆にいうと全く別の人が作ったDLLへの差し替えもできてしまうのだ。DLLハイジャックとも呼ばれる。
これを悪用して何があってもプログラム側からは「ライセンスを保有している」という情報になるような互換DLLを作成してみた。起動時等にライセンス認証を試みると偽DLLが「ライセンスがあります!」と返答するのだ
気がついてから半日もかからずに不正ライセンス認証プログラムは出来上がった。適当なソフトをダウンロードしてくると、全てのソフトが全く問題なく動作してしまったのだった。管理ツール上は全てがライセンス無しにも関わらずである。
もちろん即座に会社に報告した後に当該会社にも報告した。
クラック用DLLのソースコード付だ。主要部分は本当に数行程度のソースで、API関数をDLLの仕様に合わせる方が時間がかかった。
完全にゼロデイだったし、仕様に絡むところだったので先方も修正は困難だった。説明後に先方の会社はお通夜モードになったのは言うまでも無い。
匿名掲示板なんかでは解析できた奴いない?とかスレッドが立っていたので、DLLを配布したら一躍ヒーローになれただろうけど完全に沈黙を保った。
調子に乗ってたら、後の事件を思うと警察のお世話になっていた気がする。。。
その後、仕様を変更して旧バージョンは廃止になった。色々な会社が利用していたので完全に入れ替わるまでに結構な時間がかかったんじゃないだろうか。
ちなみに現在でも、そのサービスは細々と続いているようだ。
現在も本当にちょっとした何かのミスでセキュリティは突破されてしまう状況だ。しかも破られたことに気がつかないことが大半である。
こうやって試行錯誤してセキュリティを突破できる能力が無いと、今は防御もできない。
グレーゾーンのテクニックなので、高いモラルが無いと金次第でどちら側につくか分からなし、そもそも実戦で黒い経験が無いと話にならなかったりするし。。。
色々と難しいのである。
尚、特別ボーナスが貰えるかと期待したのだが1円も貰えなかった。
そういった会社じゃ無いと全く金にならないのよね。。。
今だと若い方でこのような事が出来る人は本当に少ないので、同じ目に遭ったら自信を持って転職をお勧めします!




コメント