This post is also available in: English (英語)
概要
2019年から2020年にかけ、悪意のあるPDFファイルはそれまでの411,800件から5,224,056件へと1,160%の急激な伸びを示しました。PDFはクロスプラットフォームで利用でき、被害者とやりとりをすることもできることから、攻撃者にとって魅力のあるフィッシング攻撃ベクトルとなっています。単純なリンクだけのテキストベースの電子メールとはちがい、PDFによるスキームはよりユーザーを騙しやすいように作ることができます。
フィッシングPDFファイルに埋め込まれたリンクやボタンをユーザーにクリックさせるため、2020年に攻撃者がフィッシング攻撃実行に使用した上位5つのスキームが特定されました。その 5つとは、偽CAPTCHA、クーポン、再生ボタン、ファイル共有、そしてEコマースです。
パロアルトネットワークス製品をご利用のお客様は、Cortex XDR、AutoFocus、セキュリティサブスクリプションWildFire、脅威防御、URLフィルタリング、DNSセキュリティを利用する次世代ファイアウォールなど、さまざまなサービスを通じてフィッシングドキュメントによる攻撃から保護されています。
データ収集
2020年に観測された傾向を分析するため、パロアルトネットワークスWildFireプラットフォームから収集したデータを活用しました。2020年を通じ、週次でフィッシングPDFサンプルのサブセットを収集し、さまざまなヒューリスティックベースの処理と手動分析により、収集したデータセットの上位テーマを特定しました。これらの特定後、各バケット内のファイルと一致するYaraルールを作成し、WildFireで観測したすべての悪意のあるPDFファイルにYaraルールを適用しました。
データの概要
2020年には、500万件を超える悪意のあるPDFファイルが観測されました。表1は、2019年と比較し、2020年に観測された悪意のあるPDFファイルの割合の増加を示しています。
マルウェア | 観測されたPDFファイル総数 | PDFマルウェアの割合 | 増加率 | |
2019 | 411,800 | 4,558,826,227 | 0.009% | 1,160% |
2020年 | 5,224,056 | 6,707,266,410 | 0.08% |
表1 2019年と2020年に見られた悪意のあるPDFサンプルの配布
図1の円グラフは、上位トレンドとスキームのそれぞれがどのように分布していたかについての概要を示しています。WildFireで観測された悪意のあるPDFファイルの最大数は、偽の「CAPTCHA」カテゴリに属していました。続くセクションで各スキームについて詳しく取り上げます。なお「その他」のカテゴリに分類されるものはバリエーションが多すぎて共通のテーマをもっていなかったためここでは説明を割愛します。
トラフィックリダイレクトの使用
さまざまなPDFを使う攻撃キャンペーンを調査した結果、それらの大半で「トラフィックリダイレクトの使用」が重用される手法であることがわかりました。
さまざまなPDFフィッシングキャンペーンについて確認していく前に、まず悪意のあるフィッシングPDFファイルにおけるトラフィックリダイレクトの重要性について述べます。フィッシングPDFファイルに埋め込まれたリンクは多くの場合、ユーザーを「ゲート付き」(ログインなどを要求するなど、そのページに入る前になんらかのゲートを設けてある)Webサイトに誘導し、そこから悪意のあるWebサイトにリダイレクトするか、複数のWebサイトに順番にリダイレクトしていきます。攻撃者は、頻繁にテイクダウンされる可能性のある終着フィッシングWebサイトを埋め込むかわりにゲートを設けることで、フィッシング用ルアーPDFの賞味期限を伸ばし、検出を回避することができます。また、ルアーの最終目的も必要に応じて変更できます(たとえば、攻撃者は終着のWebサイトを資格情報窃取用のサイトからクレジットカード詐欺用のサイトに変更できます)。これはPDFファイルに限った話ではありませんが、マルウェアベースのWebサイトによるトラフィックリダイレクト手法については、「Analysis of Redirection Caused by Web-based Malware(Web感染型マルウェアのリダイレクト解析)」の研究で髙田らが詳しく論じています。
PDFファイルを使用するフィッシング攻撃の傾向
データセットから上位5つのフィッシング詐欺を特定し、それらを配布の多いものから順に分類します。フィッシングPDFファイルは多くの場合第2ステップとして機能し、それらを含むキャリア(たとえばPDFを含む電子メールやWeb投稿)と連携して機能すると覚えておくのが重要です。
1. 偽CAPTCHA
偽CAPTCHAのPDFファイルは、その名が示す通り、ユーザーに偽のCAPTCHAを介した自分自身の確認を要求します。CAPTCHAは、ユーザーが人間であるかどうかを判断するのに役立つチャレンジレスポンステストです。ただし、私たちが観測したフィッシングPDFファイルでは実際のCAPTCHAは使用されておらず、CAPTCHAテストの埋め込み画像が使用されていました。ユーザーが[Continue(続行)]ボタンをクリックして自分自身を「確認」しようとすると、ただちに攻撃者の制御下にあるWebサイトに移動させられます。図2は偽CAPTCHAが埋め込まれたPDFファイルの例を示していますが、この実体はクリック可能なただの画像です。これらのファイルの完全な攻撃チェーン分析は後述の「偽CAPTCHA分析」セクションに譲ります。
2. クーポン
私たちが特定した2番目のカテゴリは、クーポンをテーマにしたフィッシングPDFファイルで、著名な石油会社のロゴがよく使用されていました。これらのファイルのかなりの数がロシア語で書かれており、「ПОЛУЧИТЬ50%СКИДКУ」や「ЖМИТЕНАКАРТИНКУ」などの文言が添えられていました。これらはそれぞれ「50%の割引を受けよう」、「画像をクリックしてください」という意味になります。図3は、これらのタイプのフィッシングPDFファイルの例を示しています。
私たちが観測した他のキャンペーン同様、これらのフィッシングファイルでも前述の理由でトラフィックリダイレクトが利用されていました。それらのいくつかを分析したところ、2つのトラフィックリダイレクタが使用されていることがわかりました。図4は、あるサンプルからのイベントチェーンを示しています(SHA256: 5706746b7e09b743a90e3458e5921367a66a5c3cfbd9417ed082dea586b7986e)。
ゲートとなるWebサイトから別のWebサイトにリダイレクトされましたが(track[.]backtoblack.xyz)、そのページ自体がまたリダイレクタでした。ここではGETリクエストを介して最終的にアダルト出会い系サイトにルーティングされました。このさいはclick_idなどいくつかのパラメータが入力された状態になっており、これらが収益化に使用されています(図5参照)。これらのリダイレクトはすべてHTTP302応答メッセージ経由で発生しました。私たちの調査からは、backtoblack[.]xyz がユーザーが最後にアクセスするWebサイトをコントロールしていることがわかりました。
3. 再生ボタン付き静止画像
これらのフィッシングファイルは、ほとんどが静止画像で、再生ボタンの画像が埋め込まれています。必ずしも特定のメッセージは含まれていません。いくつかのカテゴリの画像を観測したところ、その大くがヌードかビットコインや株価チャートなど特定の金融系テーマを使っており、ユーザーに再生ボタンをクリックするよう促していました。図6は、ビットコインのロゴとクリック可能な再生ボタンが付いたPDFファイルを示しています。
再生ボタンをクリックすると予想通り別のWebサイトにリダイレクトされました。今回の検証ではその多くが https://gerl-s[.]online/?s1=ptt1 にリダイレクトされました。このドメイン名からは、このWebサイトもオンラインの出会い系サイトカテゴリであることが推測されます。ただし本稿執筆時点でこのwebサイトはすでにテイクダウン済みでした。1つ前のキャンペーンとは異なり、今回関与したリダイレクタは1つだけで、それらすべてでリダイレクタの形式は「<6桁の英数字の一意なID>[.]sed の後ろに以下にリストした主たるドメインが続く」というものでした。
- http://pn9yozq[.]sed.notifyafriend.com/
- http://l8cag6n[.]sed.theangeltones.com/
- http://9ltnsan[.]sed.roxannearian.com/
- http://wnj0e4l[.]sed.ventasdirectas.com/
- http://x6pd3rd[.]sed.ojjdp.com/
- http://ik92b69[.]sed.chingandchang.com/
- http://of8nso0[.]sed.lickinlesbians.com/
4. ファイル共有
このカテゴリのフィッシングPDFファイルは、人気オンラインファイル共有サービスを利用してユーザーの注意を引きます。多くの場合、誰かがドキュメントを共有したことをユーザーに通知するものです。なお、PDFファイルごとにその理由はさまざまですが、「コンテンツを表示できないのでユーザーが埋め込みボタンかリンクをクリックする必要がある」とされています。図7は、ユーザーにボタンをクリックしてアクセスを要求するよう求めるDropboxロゴ付きのPDFを示しています。図8は、同様にOneDriveロゴの付いたPDFファイルの画像を示しています。こちらではユーザーに[Access Document (ドキュメントにアクセス)]をクリックしてファイルの内容を表示するように求めています。クラウドベースのファイル共有サービス数は増えつづけているので、このテーマが急増し、人気アプローチの1つであり続けているのも不思議はありません。
[Access Document (ドキュメントにアクセス)]をクリックすると、図9に示すAtlassianのロゴのついたログインページが表示されます。サインインするのに、Microsoftのメールアドレスその他の電子メールサービスという2つのオプションが与えられます。
Atlassian Stackは企業が対象なのでこのキャンペーンは企業ユーザーを狙ったものだと思われます。これらの各リンクは、正規の電子メールサインオンページに見えるように設計されていて、たとえば、[Continue with Microsoft]ボタンは、正規の https://login.live.com ページにアクセスしたときに表示されるページとわりあいに似たページに移動しました。(図10参照)。
偽の電子メールアドレスを入力してみると、図11に示すように、パスワード入力を求める別ページに進みました。
図12に示すように、窃取された資格情報がGETリクエストのパラメータを介し、攻撃者のサーバーに送信されたことがわかりました。
検証用の資格情報を入力後は、最初のログインページに戻されました。なお、本Webサイトにアクセスした時点で、Google ChromeやMozilla Firefoxなど主要ブラウザはすでにフィッシングのフラグを立てていた点はご承知おきいただければと思います。今回はあえて警告ページをクリックして継続調査を行いました。
5. Eコマース
Eコマースをテーマとしてフィッシングメールやドキュメントに組み込むのはとくに新しいトレンドではありません。それでも一般的なEコマースの商標を使用してユーザーをだまし、埋め込まんだリンクをクリックさせる不正PDFファイル数は増加傾向にあります。図13は、クレジットカードが無効になったのでAmazonプライム特典を中断されないよう「支払い情報を更新」するようにユーザーに通知するフィッシングPDFファイルの例を示しています。同様に図14はユーザーがリンクをクリックして情報を更新しなければApple IDのアカウントが一時停止されることをユーザーに通知するPDFファイルを示しています。
なお、本稿執筆時点でこの特定キャンペーン用のwebサイトはすべてテイクダウン済みです。これらのEコマースをテーマにしたフィッシングPDFファイルの大半で、リダイレクト目的で https://t.umblr[.]com/ が使われていることは注目に値するでしょう。以下に例を示します。
- https://t.umblr[.]com/redirect?z=https%3A%2F%2Fdulunggakada40.com%2F%3Fgdghrtjykuujttjkg&t=ZDJkNjIzMjY2ZDBlMDkyMDIwNTkwZDFiYTdlNGI5NTE3MTJlOWY0YyxlMDVkM2Y0YjE1NDljMmM5NWMyZmUxMTBlOWYzYzBhMzI3Y2UyZDNh&ts=1605344440
- https://t.umblr[.]com/redirect?z=https%3A%2F%2Fdulunggakada40.com%2F%3Fgdghrtjykuujttjkg&t=ZDJkNjIzMjY2ZDBlMDkyMDIwNTkwZDFiYTdlNGI5NTE3MTJlOWY0YyxlMDVkM2Y0YjE1NDljMmM5NWMyZmUxMTBlOWYzYzBhMzI3Y2UyZDNh&ts=1605344440
偽CAPTCHAの分析
前述のように、2020年に見られたフィッシングPDFファイルの40%近くが偽CAPTCHAのカテゴリに入るものでした。図15は、偽CAPTCHAのサンプル(SHA256: 21f225942de6aab545736f5d2cc516376776d3f3080de21fcb06aa71749fc18f)のコンテンツをバイナリエディタで表示したところです。このPDFファイルには、https://ggtraff[.]ru/pify?keyword=download+limbo+apk+full+game を指すUniform Resource Identifier(URI)が埋め込まれていることがわかりますが、これがトラフィックリダイレクタです。前述のように、トラフィックのリダイレクトを行うWebサイトは、固定のWebサイトを指さず、訪問ごとにユーザーを別のWebサイトにリダイレクトすることがよくあります。
図16は検証のさいに前述のURIから得たHTTPレスポンスのボディ部分です。リダイレクタから返されたレスポンスはユーザーを再度リダイレクトさせる小さなJavaScriptコードのスタブでしたが、今回のリダイレクト先は https://robotornotcheckonline[.]xyz/?p=miywentfmi5gi3bpgizdqnzv&sub1=wbly&sub3=1h6oih4jofeu&sub4=download+limbo+apk+full+game でした。
かいつまんで言うと、上記のコードはブラウザのプッシュ通知を登録するものです。Mozillaは、Webブラウザのプッシュ通知を次のように説明しています。「Notifications APIを使用すると、Webページまたはアプリはシステムレベルでページの外部に表示される通知を送信できます。これにより、アプリケーションがアイドル状態またはバックグラウンドの場合でも、Webアプリはユーザーに情報を送信できるようになります。」図18は、WebブラウザでWebサイトにアクセスしたさいの許可の要求を示しています。
このループは数回続く可能性があります。なお、通知を表示するためにサイトをWebブラウザで開いている必要がない点に注意してください。攻撃チェーンの完了後、2つのプッシュ通知がブラウザに登録されていることがわかりました(図20参照)。これにより、このブラウザはこれらのWebサイトの「ターゲット」として登録され、追加のマルバタイジングWebサイトや拡張機能のインストールのため、このあとポップアップが送信されてきます。
最終的にはオンラインゲームのWebサイトにたどり着きました。使用されたHTTP GETリクエストは次の通りです。
- https://promo[.]???.com/glows-27628/na-en/?pub_id=1374&xid=600889fbf85ac2000110370d&xid_param1=3047954&xid_param_2=&sid=SIDQVeAYOu1UbRxwVV690c-yVM5sWOOfDAb7-h_jd_AIcFGJbFBhqkUXwCszxjNr_9eJ1uoX1OdKr3vILRvqtbg9mcdeMNy5zbavbbqOxtJwEYgn1l5htPFMCsWv3Ft45e5BLHmpA0DQLcy&enctid=c8o8xirbufyh&lpsn=WOWS+TMPLT1+CODE+BOOM+global&foris=1&utm_source=wlap&utm_medium=affiliate&utm_campaign=qmk1qpm1&utm_content=1374
ご覧のとおり、上記のGETリクエストには関連パラメータがたくさんあります。攻撃者はこれで収益を生み出しているものと私たちは推定しています。これらの識別子により、そのユーザーがそこにどのようにしてたどり着いたかがWebサイトの所有者に伝わります。それが攻撃者が用意した手段によってであれば、攻撃者はユーザーをそのWebサイトに誘導した見返りに何らかのコミッションを受け取ります。このほか、Urchin Tracking Module(追跡モジュール)パラメータを使って、この「マーケティング」手法の有効性を評価していることもわかりました。攻撃者は、収益を継続的にあげるために、1度クリックさせるだけでなく、プッシュ通知を利用しているようです。そうすれば、ときおりこの通知メカニズムを使って、サブスクリプションを許可したユーザーにより多くのリンクをクリックさせ、さらなる収益を生むことができます。前述したように、私たちの分析からは、偽CAPTCHAのフィッシングサンプルにはトラフィックリダイレクトWebサイトを指すリンクが埋め込まれていて、訪問ごとにユーザーを別のWebサイトにリダイレクトすることが確認されています。これらのフィッシングファイルが他にどんなものにつながっていくのかを詳しく知るため、さらに数回訪問してみることにしました。そのうちの1つでは、プッシュ通知のサブスクリプションを求めるページが表示されただけでなく、Google Chrome拡張機能のダウンロードも求められました(図21参照)。
ここで[Add to Chrome(Chromeに追加)]をクリックすると、Chromeウェブストアに移動させられました。Chromeウェブストアはブラウザ張機能をホストしているGoogleのオンラインストアです。図22は、ダウンロード数が1,000を超えるChromeウェブストアの拡張機能を示しています。
注: 本稿の公開時点でこの拡張機能はChromeウェブストアではすでに利用できなくなっています。
ダウンロードして分析した結果、このHDSportSearchという機能拡張のパッケージにバンドルされているmanifest.jsonファイルは、検索エンジンハイジャッカーであることがわかりました。検索エンジンハイジャッカーは、ブラウザの検索エンジンのデフォルト値をオーバーライドします(図23参照)。
図24はこの偽CAPTCHAを含むPDFフィッシングファイルについて探索できたイベントチェーンをまとめたものです。
結論
今回は2020年にもっともよく見られたPDFベースのフィッシングキャンペーンとそれらの分布について解説しました。近年のデータからは、フィッシング攻撃数が増え続けていること、攻撃者がユーザーを食い物にするために使う主要攻撃ベクトルがソーシャルエンジニアリングであることがわかります。以前の調査では、大規模なフィッシングのクリック率(CTR)は最大8%であることが示されています。したがって、予期していないファイルを受け取った場合は確認を重ねることが重要です。たとえそれらが自分のよく知る、信頼のおける相手からのものであってもです。たとえば「唐突にアカウントがロックされる理由があるだろうか?」、「予想もしていないタイミングで誰かがファイルを共有してくることがあるだろうか?」と自問するようにしてください。
パロアルトネットワークス製品をご利用のお客様は、さまざまなサービスを通じ、このようなフィッシングドキュメントによる攻撃から保護されています。
- Cortex XDRはフィッシングドキュメントの配信と実行から保護します。
- セキュリティサブスクリプションを備えた次世代ファイアウォールは、WildFireと脅威防御によりフィッシングドキュメントの配信から保護し、URLフィルタリングによりリダイレクタと最終的なフィッシングURLから保護し、DNSセキュリティによりリダイレクタと最終的なフィッシングドメインから保護します。
- AutoFocusをお使いのお客様は、AutofocusのGenericPhishingDocsタグを使うと、これらPDFフィッシングキャンペーンの一部を追跡できます。
IoC
キャンペーン | SHA256値 |
偽CAPTCHA | 7bb3553eea6e049a943bc2077949bc767daab2c3c993ce1001176f81c9dbb565 |
2df31f2ea1a434a034a1b3031f3e59bae6c6f73dff39e50fd37bd028577e2710 | |
9b2a875169db01332f5fbb59bb3021ad5dd1b241add17750924a85033798f8e7 | |
クーポン | 5706746b7e09b743a90e3458e5921367a66a5c3cfbd9417ed082dea586b7986e |
0cce9de0ff8e5bc07a8b54a95abbef49db08105b83c233a3c3647c09c06bdffb | |
0e4d74dacdb72756c49438f81e3267a9e92c3ea9465a84aa5cf4fdaf82a6ed61 | |
再生ボタン | 6835fa030a50b9826612d1e6e3f0c1db2790b3783f62de02972898f79be07265 |
2c361182748c44364b7e631280ca47fa09cb9736b06208285384d6d7826c67b9 | |
6835fa030a50b9826612d1e6e3f0c1db2790b3783f62de02972898f79be07265 | |
ファイル共有 | 0ce0cfb5c175f57efb02521d69020098d302bc3e37c4d793721351f5a7ee0350 |
8c602aee3565491864da3b1040696b23b80cee2894c52b5cd982a11ad37977a3 | |
9a79cae2ba1ba1510d5940a1b5559dd1509b7377a6bd125866e65f96c12d8894 | |
Eコマース | b330cbd30a2ab86e0f855e9a0d3a87aa7b91829db5c6bc34f4fa69b86d715568 |
7e7f2726a892ada15a1bdf79bd6f967650c440a64e89d5f1b83e29afdece1f1c | |
cccee5092d5986d34bfdead009d24d1b0dfb8284f291ed44093904cc9c494d7f |
関連Autofocusタグ
GenericPhishingDocs
リダイレクタ
- pn9yozq[.]sed.notifyafriend.com
- l8cag6n[.]sed.theangeltones.com
- 9ltnsan[.]sed.roxannearian.com
- wnj0e4l[.]sed.ventasdirectas.com
- x6pd3rd[.]sed.ojjdp.com
- ik92b69[.]sed.chingandchang.com
- of8nso0[.]sed.lickinlesbians.com
- t.umblr[.]com/redirect?z=https%3A%2F%2Fdulunggakada40.com%2F%3Fgdghrtjykuujttjkg&t=ZDJkNjIzMjY2ZDBlMDkyMDIwNTkwZDFiYTdlNGI5NTE3MTJlOWY0YyxlMDVkM2Y0YjE1NDljMmM5NWMyZmUxMTBlOWYzYzBhMzI3Y2UyZDNh&ts=1605344440
- t.umblr[.]com/redirect?z=https%3A%2F%2Fdulunggakada40.com%2F%3Fgdghrtjykuujttjkg&t=ZDJkNjIzMjY2ZDBlMDkyMDIwNTkwZDFiYTdlNGI5NTE3MTJlOWY0YyxlMDVkM2Y0YjE1NDljMmM5NWMyZmUxMTBlOWYzYzBhMzI3Y2UyZDNh&ts=1605344440
- ggtraff[.]ru/pify?keyword=download+limbo+apk+full+gam
最終ホスト
- robotornotcheckonline[.]xyz/?p=miywentfmi5gi3bpgizdqnzv&sub1=wbly&sub3=1h6oih4jofeu&sub4=download+limbo+apk+full+game
- gerl-s[.]online/?s1=ptt1
- creqwcf[.]tk/%23$%25%5e&
- get[.]hdsportsearch.com/?pid=58955&clickid=37590634811986352
使用したYaraルール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 |
rule onedrive_category_2 { meta: author = "Ashkan Hosseini" date = "2021-01-08" description = "Onedrive Category 2 (Red Background)" hash0 = "af35c35a1b1fa09944c29000923076cc" hash1 = "5c199d1c59b93fa5b1e322ed7846f146" hash2 = "e1a267558a6d4fdbfc4502a27239c1b4" hash3 = "980bba53d02b9e4e53d13621b11ddfb5" hash4 = "26a670f532d702199c2c3f4b65f9c1e7" hash5 = "f8162f71caa3581c66a16c894f089320" hash6 = "0338637ab800cfea336ccf4f00b303f7" hash7 = "d05742fc803bcd719f1afc156e703910" sample_filetype = "pdf" strings: $string0 = "4 0 obj" $string1 = "1 0 obj" $string2 = "endobj" $string3 = "9 0 obj" $string4 = "endstream" $string5 = "startxref" $string6 = "12 0 obj" $string7 = "11 0 obj" $string8 = { 25 50 44 46 2d 31 2e 37 0d } $string9 = { 65 6e 64 6f 62 6a 0d } $string10 = { 72 6f 75 70 } $string11 = { 74 2f 53 75 62 74 79 70 65 2f } $string12 = { 29 4a a5 28 91 62 } $string13 = { 99 73 d9 79 } condition: all of them } rule onedrive_category_1 { meta: author = "Ashkan Hosseini" date = "2021-01-08" description = "one drive category 1 (blue background)" hash0 = "4ed8e629b4175427abc3d8a96589d4db" hash1 = "64d2e35e875fedaa7b206cfea2762910" hash2 = "098db1edac07219b1a1fc8732b0ff6e3" hash3 = "0cb9d12551b22109f51feaadbfa4d9a1" hash4 = "6467377125be7da67a94d8d608d2b927" hash5 = "90fe53f54331a34b91523d12c65fbffa" sample_filetype = "pdf" strings: $string0 = "W5M0MpCehiHzreSzNTczkc9d" $string1 = "http://ns.adobe.com/pdf/1.3/" $string2 = "adobe:ns:meta/" $string3 = "18 0 obj" $string4 = "</x:xmpmeta>" $string5 = "14 0 obj" $string6 = "endstream" $string7 = "</rdf:Description>" $string8 = "http://ns.adobe.com/xap/1.0/mm/" $string9 = "<xmpMM:VersionID>1</xmpMM:VersionID>" $string10 = "<xmpMM:RenditionClass>default</xmpMM:RenditionClass>" $string11 = "xmlns:pdf" $string12 = "xpacket end" $string13 = "11 0 obj" $string14 = "http://ns.adobe.com/xap/1.0/" $string15 = { 2f 52 65 73 6f 75 72 63 } $string16 = { 3e 3e 3e 3e 3e 0d 65 6e 64 6f 62 6a 0d 32 20 30 20 6f 62 6a 0d 3c 3c } $string17 = { 2f 50 20 31 20 30 20 52 2f 41 20 33 20 30 } $string18 = { 29 3e 3e 0d 65 6e 64 6f 62 6a 0d 34 20 30 20 6f 62 6a 0d 3c 3c 2f 53 } $string19 = { 3e 3e 0d 65 6e 64 6f 62 6a 0d 35 20 30 20 6f 62 6a 0d 3c 3c } $string20 = { 39 20 30 20 52 2f } $string23 = { 31 20 30 20 6f 62 6a 0d 3c 3c 2f 54 79 70 65 2f 50 61 67 65 2f 50 61 72 65 6e 74 } $uri = { 2f 55 52 49 } $string24 = { 0d 25 e2 e3 cf d3 0d 0a 31 20 30 20 6f 62 6a 0d 3c } condition: all of($string*) and #uri < 20 } rule filesharing_pdf_scams { meta: author = "Ashkan Hosseini" date = "2021-01-07" description = "File Sharing PDF Scams" hash0 = "170ac152d30f98ca01db808b1dd397d2" hash1 = "00d9aa947875f80b3a23e7af4267633e" hash2 = "b797c0905cd784c2d457ac516791a154" hash3 = "ae5ae57576f4c6ce94e096867011eb65" sample_filetype = "pdf" strings: $string0 = "W5M0MpCehiHzreSzNTczkc9d" $string1 = "4 0 obj" $string2 = "1 0 obj" $string3 = "6 0 obj" $string4 = "0000000000 65535 f" $string5 = "xpacket end" $string6 = "</x:xmpmeta>" $string7 = "<rdf:RDF xmlns:rdf" $string8 = "<</Filter/FlateDecode/Length 50>>stream" $string9 = "startxref" $string10 = "<</Type/Page/Parent 6 0 R/Contents 5 0 R/MediaBox[0 0 734.88 593.76001]/CropBox[0 0 734.88 593.76001" $string11 = "%PDF-1.4" $string12 = "0000000016 00000 n" $string13 = "http://ns.adobe.com/xap/1.0/" $string14 = "xmlns:pdf" $string15 = "<x:xmpmeta xmlns:x" $string16 = "456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz" condition: 16 of them } rule ecommerce_pdf_scams { meta: author = "Ashkan Hosseini" date = "2021-01-07" description = "Ecommerce PDF Scams" hash0 = "e7357d268430b36636e4fa1255eabbb4" hash1 = "d08be5516ffec6f4580f366ad7961d96" hash2 = "0999539a9900a7657d0d6e5dbc2e4ae0" hash3 = "7912091795d4ff92abf99a0239856fe1" hash4 = "87fdc6dfff4094cfb43f4bbd58f833da" hash5 = "752979a99536edb032d094e36cf556e8" sample_filetype = "pdf" strings: $string0 = "2 0 obj" $string1 = "stream" $string2 = "0000000103 00000 n" $string3 = "8 0 obj" $string4 = "<</AIS false /BM /Normal /CA 1 /Type /ExtGState /ca 1>>" $string5 = "3 0 obj" $string6 = "10 0 obj" $string7 = "0000000016 00000 n" $string8 = "5 0 obj" $string9 = "82<.342" $string10 = "456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz" $string11 = {72 53 70 61 63 65 20 2f 44 65 76 69 63 65 52 47 42 20 2f 46 69 6c 74 65 72 20 2f 44 43 54 44 65 63 6f 64 65 20 2f 48 65 69 67 68 74 20} $string12 = {3d 38 32 3c 2e 33 34 32 ff db 00 43 01 09 09 09 0c 0b 0c 18 0d 0d 18 32 21 1c 21 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32} $string13 = {72 d1 0a 16 24 34 e1 25 f1 17 18 19 1a 26 27 28 29 2a 35 36 37 38 39 3a 43 44 45 46 47 48 49 4a 53 54 55 56 57 58 59 5a 63 64 65 66 67 68 69 6a 73} $string14 = {27 29 20 2f 53 75 62 6a 65 63 74 20 28 29 20 2f 54 69 74 6c 65 20 28 29 20 2f 54 72 61 70 70 65 64 20} $string15 = {27 29 20 2f 50 72 6f 64 75 63 65 72 20 28 29 20 2f 53 6f 75 72 63 65 4d 6f 64 69 66 69 65 64 20 28 44 3a 32 30 32 30} $string16 = {72 20 28 57 50 53 20 57 72 69 74 65 72 29 20 2f 4b 65 79 77 6f 72 64 73 20 28 29 20 2f 4d 6f 64 44 61 74 65 20 28 44 3a 32 30 32 30} $string17 = {28 29 20 2f 43 72 65 61 74 69 6f 6e 44 61 74 65 20 28 44 3a 32} $string18 = {3e 3e 0d 0a 73 74 72 65 61 6d 0d 0a ff d8 ff e0 00 10 4a 46 49 46} $string19 = { 2F 43 72 65 61 74 69 6F 6E 44 61 74 65 } $string20 = {2F 52 65 73 6F 75 72 63 65 73 20 3C 3C 2F 45 78 74 47 53 74 61 74 65 20 3C 3C 2F 47 53 39 20 39 20 30 20 52 3E 3E } $string21 = {41 20 31 31 20 30 20 52 20 2F 42 53 20 3C 3C 2F 57 20 30 3E 3E 20 2F 46 20 34 20 2F 50 20 36 20 30 20 52 20 2F 52 65 63 74 20 5B } $intro = {31 20 30 20 6F 62 6A 0D 3C 3C 2F 4E 61 6D 65 73 20 3C 3C 2F 44 65 73 74 73 20 34 20 30 20 52 3E 3E 20 2F 4F 75 74 6C 69 6E 65 73 20 35 20 30 20 52 20 2F 50 61 67 65 73 20 32 20 30 20 52 20 2F 54 79 70 65 20 2F 43 61 74 61 6C 6F 67 3E 3E 0D 65 6E 64 6F 62 6A 0D} $bitspercomp = {42 69 74 73 50 65 72 43 6F 6D 70 6F 6E 65 6E 74 20 38 20 2F 43 6F 6C 6F 72 53 70 61 63 65 20 2F 44 65 76 69 63 65 52 47 42 20 2F 46 69 6C 74 65 72 20 2F 44 43 54 44 65 63 6F 64 65 20 2F 48 65 69 67 68 74 } condition: all of them } rule coupon_click_image { meta: author = "Ashkan Hosseini" date = "2021-01-11" description = "coupon" hash0 = "4bbdc201e69e5983a6b949eb3424f244" hash1 = "e02f52639d47f838ad13201602cc7a10" hash2 = "7638afe039ad5f405a9ef72b6b6437d4" hash3 = "a4b13e23f175c7da6b9e54357793235c" hash4 = "b1583913ea7f231bba979de191251f58" sample_filetype = "pdf" strings: $string0 = "/CMapType 2 def" $string1 = "17 0 obj" $string2 = "/ca 1.0" $string3 = "12 dict begin" $string4 = "CMapName currentdict /CMap defineresource pop" $string5 = "/Pattern <<" $string6 = "11 0 obj" $string7 = "/Resources 13 0 R" $string8 = "endstream" $string9 = "begincmap" $string10 = "startxref" $string11 = "/Border [0 0 0]" $string12 = "Qt 4.8." wide $string13 = "/GSa 3 0 R" $string14 = "/ColorSpace /DeviceRGB" $string15 = "/ExtGState <<" $string16 = "12 0 obj" $string17 = "13 0 obj" $intro = { 54 69 74 6C 65 20 28 FE FF 29 0A 2F 43 72 65 61 74 6F 72 20 28 FE FF } $colorpsace = { 43 6F 6C 6F 72 53 70 61 63 65 20 3C 3C 0A 2F 50 43 53 70 20 34 20 30 20 52 0A 2F 43 53 70 20 2F 44 65 76 69 63 65 52 47 42 0A 2F 43 53 70 67 20 2F 44 65 76 69 63 65 47 72 61 79 0A 3E 3E 0A 2F 45 78 74 47 53 74 61 74 65 20 3C 3C 0A 2F 47 53 61 20 33 20 30 20 52 0A 3E 3E 0A 2F 50 61 74 74 65 72 6E 20 3C 3C 0A 3E 3E 0A 2F } $cidsysteminfo = {2F 43 49 44 53 79 73 74 65 6D 49 6E 66 6F 20 3C 3C 20 2F 52 65 67 69 73 74 72 79 20 28 41 64 6F 62 65 29 20 2F 4F 72 64 65 72 69 6E 67 20 28 49 64 65 6E 74 69 74 79 29} $parent_content = {2F 50 61 72 65 6E 74 20 32 20 30 20 52 0A 2F 43 6F 6E 74 65 6E 74 73 20 31 31 20 30 20 52 0A 2F 52 65 73 6F 75 72 63 65 73 20 31 33 20 30 20 52 0A 2F 41 6E 6E 6F 74 73 20 31 34 20 30 20 52 0A 2F 4D 65 64 69 61 42 6F 78 20 5B} $encoding = {49 64 65 6E 74 69 74 79 2D 48 0A 2F 44 65 73 63 65 6E 64 61 6E 74 46 6F 6E 74 73 20 5B 31 37 20 30 20 52 5D 0A 2F 54 6F 55 6E 69 63 6F 64 65 20 31 38 20 30 20 52} $pattern_device_rgb = {2F 50 61 74 74 65 72 6E 20 2F 44 65 76 69 63 65 52 47 42} condition: all of them } rule playbutton { meta: author = "Ashkan Hosseini" date = "2021-01-11" description = "pdf image with play button" hash0 = "58a83df51c3e6324f335760b8088bef4" hash1 = "2ab112c5b8993429a1d217fd9401d889" hash2 = "88dcb68d71eaac9a6f95bf8e0fe83df9" hash3 = "c8e3d34ea4efdefb337875fc1e0b681f" hash4 = "bcb13edd31d78e15b3d98ccbfc1c5d41" sample_filetype = "pdf" strings: $string0 = "[ 8 0 R 9 0 R 10 0 R ]" $string1 = "/Contents 12 0 R" $string2 = "/Filter /DCTDecode" $string3 = "/Type /Annot" $string4 = "1 0 obj" $string5 = "/Size 16" $string6 = "/ProcSet [/PDF /Text /ImageB /ImageC]" $string7 = "/SA true" $string8 = "/Parent 2 0 R" $string9 = "/Border [0 0 0]" $string10 = "trailer" $string11 = "/Pages 2 0 R" $string12 = "/Type /Pages" $string13 = "/Pattern <<" $string14 = "/ExtGState <<" $string15 = "/ColorSpace /DeviceRGB" $string16 = "/S /URI" $string17 = "/XObject <<" $string18 = { 73 68 61 62 5F 68 74 6D 6C } $string19 = { 41 6E 6E 6F 74 73 20 31 35 20 30 20 52 0A 2F 4D 65 64 69 61 42 6F 78 20 5B } $string20 = {33 20 30 20 6F 62 6A 0A 3C 3C 0A 2F 54 79 70 65 20 2F 45 78 74 47 53 74 61 74 65 0A 2F 53 41 20 74 72 75 65 0A 2F 53 4D 20 30 2E 30 32 0A 2F 63 61 20 31 2E 30 0A 2F 43 41 20 31 2E 30 0A 2F 41 49 53 20 66 61 6C 73 65 0A 2F 53 4D 61 73 6B 20 2F 4E 6F 6E 65 3E 3E 0A 65 6E 64 6F 62 6A 0A } $string21 = {0A 31 35 20 30 20 6F 62 6A 0A 5B 20 38 20 30 20 52 20 39 20 30 20 52 20 31 30 20 30 20 52 20 5D 0A 65 6E 64 6F 62 6A 0A } condition: all of them } |