Weil Jimmer's BlogWeil Jimmer's Blog


Category:The Internet

Found 25 records. At Page 4 / 5.

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

No Comments
-
更新於 2017-10-17 22:29:26

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

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

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

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

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

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

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

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

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

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

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


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

Telegram Bot 開發機器人 (2) Python

No Comments
-
更新於 2016-07-04 15:11:22

這是我第二篇文章有關於 Telegram 機器人,此機器人的功能極其簡單!監控伺服器的使用率,最近因為在伺服器又搞了一個很麻煩的東西,要時時刻刻注意有沒有異常。所以才寫了這個小程式(如圖)。

本文直接省略@BotFather產生機器人的說明,我想那應該不是問題。第一篇文章請參考:淺談Telegram開發機器人

本程式一旦運行,就不會停止,每隔固定幾秒鐘會自動更新訊息,會一直不斷的編輯,而不是一直送出(Telegram 有支持編輯訊息的功能)。直接上程式碼。這次使用Python,因為牽扯到系統,用 PHP 就不太適合了。

# coding: utf-8
"""By Weil Jimmer"""
import os,urllib.request,shutil,sys,re,datetime,json,psutil
from time import sleep
from sys import platform as _platform

def __init__(self):
	print("")

GRAY = "\033[1;30m"
RED = "\033[1;31m"
LIME = "\033[1;32m"
YELLOW = "\033[1;33m"
BLUE = "\033[1;34m"
MAGENTA = "\033[1;35m"
CYAN = "\033[1;36m"
WHITE = "\033[1;37m"
BGRAY = "\033[1;47m"
BRED = "\033[1;41m"
BLIME = "\033[1;42m"
BYELLOW = "\033[1;43m"
BBLUE = "\033[1;44m"
BMAGENTA = "\033[1;45m"
BCYAN = "\033[1;46m"
BDARK_RED = "\033[1;48m"
UNDERLINE = "\033[4m"
END = "\033[0m"

if _platform.find("linux")<0:
	GRAY = ""
	RED = ""
	LIME = ""
	YELLOW = ""
	BLUE = ""
	MAGENTA = ""
	CYAN = ""
	WHITE = ""
	BGRAY = ""
	BRED = ""
	BLIME = ""
	BYELLOW = ""
	BBLUE = ""
	BMAGENTA = ""
	BCYAN = ""
	UNDERLINE = ""
	END = ""
	os.system("color c")

print (RED)
print ("*" * 40)
print ("*  Name:\tServer Status Telegram Bot")
print ("*  Team:" + LIME + "\tWhite Birch Forum Team" + RED)
print ("*  Developer:\tWeil Jimmer")
print ("*  Website:\thttps://weils.net/")
print ("*  Date:\t2016.07.04")
print ("*" * 40)
print (END)

chat_id = "123456789"
api_key = "123456789:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
root_dir = "/tmp/"
msg_id = ""
sleep_second = 5

def int_s(k):
	try:
		return int(k)
	except:
		return -1

def reporthook2(blocknum, blocksize, totalsize):
	do_nothing=True

def url_encode(url_):
	return urllib.parse.quote(url_, safe='~@#$&()*!+=:;,.?/\'')

def upload_URL(url,encode,data_X,method_X):
	file_name="temp_file_pyserverstatus"
	opener = urllib.request.FancyURLopener({})
	opener.version = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'
	opener.addheader("Referer", url)
	opener.addheader("X-Forwarded-For", "0.0.0.0")
	opener.addheader("Client-IP", "0.0.0.0")
	if method_X=="POST":
		local_file,response_header=opener.retrieve(url_encode(url), root_dir + file_name, reporthook2, urllib.parse.urlencode(data_X))
	else:
		local_file,response_header=opener.retrieve(url, root_dir + file_name, reporthook2)
	return open(local_file,encoding=encode).read()

def api_make_req_json(data_X):
	api_url = "https://api.telegram.org/bot" + api_key + "/"
	response=(upload_URL(api_url,"utf-8",data_X,"POST"))
	return json.loads(response)

def sendMessage(text,chatid):
	return api_make_req_json({"method":"sendMessage","chat_id":chatid,"text":text})

def editMessageText(text,chatid,messageid):
	return api_make_req_json({"method":"editMessageText","chat_id":chatid,"message_id":messageid,"text":text})

while True:
	time_now_str = "當前時間:\n" + str(datetime.datetime.now())
	cpu_useage_str = "CPU使用率:" + str(psutil.cpu_percent(interval=1)) + " %"
	memory_useage = psutil.virtual_memory()
	memory_useage_str = "記憶體使用率:" + str(memory_useage.percent) + " %\n已用:" + str(round(memory_useage.total*0.01*memory_useage.percent/1024/1024/1024,3)) + " GB" + "\n總共:" + str(round(memory_useage.total/1024/1024/1024,3)) + " GB"
	str_value = time_now_str + "\n" + cpu_useage_str + "\n" + memory_useage_str
	if msg_id=="":
		dom=sendMessage(str_value,chat_id)
		msg_id=dom['result']['message_id']
	else:
		editMessageText(str_value,chat_id,msg_id)
	sleep(sleep_second)


input("\n\n請輸入ENTER鍵結束...")

若在 Linux 的環境下,使用 tmux 輸入指令會比較好。因為它可以在背景運作,可以直接關掉 terminal。


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

PHP 利用 cUrl 抓取 HTTPS/HTTP 網頁

No Comments
-
發布於 2016-04-25 20:16:50

最近不知道要發什麼,這篇這是純當筆記用。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $data);
if (stripos($data,'https://')===0){
	//網址是https,設定SSL。
	curl_setopt($ch, CURLOPT_SSLVERSION,CURL_SSLVERSION_DEFAULT);
	curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
	curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
}
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36');
curl_setopt($ch, CURLOPT_MAXREDIRS, 999);
$html = curl_exec($ch);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($html, 0, $header_size);
$html_body = substr($html, $header_size);
curl_close($ch);

 


This entry was posted in General, Functions, The Internet, Note, PHP By Weil Jimmer.

最棒的手機通訊軟體 Telegram

3 Comments
-
更新於 2017-05-19 14:33:13

安全聊天室

最大的特點是:Telegram 支持 RSA 2048 AES 256 的安全端對端加密通訊,這是我認為最棒的功能,它可以幫助用戶阻擋外人侵入,竊取你們的通訊,而Line、FB、Yahoo……等通訊軟體,基本上,聲稱有安全加密,問題是:那些供應商是不是就可以看你的對話!

Telegram 的獨特 秘密聊天室 可以確保用戶的通訊安全,不必擔心講機密事情被警察監聽,被政府監聽,連Telegram自己都不能解密,所以,你們之間的通訊只有在你們之間才可以看得到!

除此之外, Telegram 還支持 秘密訊息 自我銷毀 的功能,超過一定時間就會自動毀滅文檔,是指 雙方的資料同步消失,若正在聊天中,用戶主動刪除訊息,而對方那邊也會跟著同步刪除,非常酷炫!

各平台/裝置支援度高

而且 Telegram 這款應用程式支援所有平台,IOS、Android、Windows、Linux 通通支援!不論手機還是電腦版,非常方便,甚至可以同時登入!還有更離譜的功能是可以自己傳訊息給自己。

容量大、永久保存的雲端

Telegram 所提供出來的雲端空間呢,是無限空間無限流量的,但是單個檔案上限大小是 1.5 GB ,意思是不可以上傳過大的檔案,同時,不論手機或電腦版,都可以傳輸檔案,傳輸照片"原檔",而非壓縮,傳輸任意格式的檔案,不像 Line 只有電腦版才可以上傳檔案,手機板無法傳檔案,聊天室圖片轉寄還會越轉越失真,轉越多人越模糊。真的很爛。

在線狀態/列表

而且在聊天室中,打字或錄音或上傳檔案,都會被顯示在狀態列,還有上線列表可以查看最後上線日期,所以可以知道誰可能已讀了,也可以知道誰正在打字中、上傳檔案中…。當然也可以隱藏最後上線時間。

管理員

在Telegram裡面,還有所謂的管理員,可以決定用戶的加入與踢出,決定群組圖片、名稱,同理也可以設定人人都是管理員,但,創始人是無法被剔除的。

同步刪除

超級群組中,會多出獨特的功能就是「可以編輯訊息」、「可以刪除訊息」,刪除訊息?什麼意思,本來不就可以刪了嗎?新版的更新後,現在已經可以在私聊中刪除自己的對話(短期內),對方也會消失,在超級群組中,自己刪掉自己的訊息,是大家都會消失掉的!

Telegram 的壓縮品質也較佳,圖片比較清晰,如果還嫌模糊就傳原檔吧!

純熟的機器人API

另外,它還可以支援 「機器人」,例如投票機器人、GIF搜圖機器人、調查機器人…,可以在聊天室中打指令實現某些功能,這個就讓用戶們自己去探索拉!

官網:https://telegram.org/

缺點

Telegram 的缺點有點少,首先是影片不可以邊播放邊下載

加好友方式,得用電話簿的方法加入,必須要知道好友的電話號碼。

缺點…其實我實在想不出有啥麼缺點。


This entry was posted in Software, Experience, Free, The Internet By Weil Jimmer.

VPN 真的安全嗎?

1 Comments
-
更新於 2017-05-08 01:29:00

真匿名嗎?

網路上一堆VPN供應商都很愛說 NO Log 不紀錄用戶的數據 ,但客戶又怎麼知道真的沒有紀錄,每個服務商都說保護用戶隱私,然後當警察追查的身分的時候,一下就被服務供應商給賣了。

網路上有不少案例,例如垃圾 HideMyAss ,竟然提交出去給警方,根本就垃圾!會想使用VPN,甚至是付費VPN的人是一定要真匿名與真安全的,然後網路上很少是這麼做的。

經過我自己去調查了一陣子之後,發現,很多部落客發出的文章都說:「那些 VPN 普遍都是騙子,當警察要抓你的時候,VPN供應商就丟出你的用戶資料!」

不是說好了要刪除嗎?不要紀錄嗎?

所以,還是沒辦法只透過一層加密的服務就擺脫所有事情,如果只用 OpenVPN代理一層應該很有機率還是會被追查到。

我是不知道警察有沒有權限可以管到國外的VPN,甚至VPN主機商主動提供資料給警察。

這部分待定。我只知道要通過複雜的代理才可以真正得到 FreeDom 以及 Privacy 。否則現在任何人在網路上做任何事,都非常有機會被抓到,只要有人提告,你基本很難逃離,更何況一般不懂網路的使用者。

通常要躲避被追蹤可以使用Tor洋蔥瀏覽器,或是使用好一點的VPN。雖然Tor的三個節點很可能都是蜜罐被FBI給設陷阱了,所以要先掛一層VPN再用Tor瀏覽器,才會比較安全一點。

「隱私是你的基本權利,不需要擔心他人在背後監視我並懲罰我就因為我當我自己。」

老實說,台灣警察要抓人,光是知道IP是沒辦法的,之前我查的結果是說:必須要先定罪,警察才有權限查IP。否則不可以亂查,更何況國外,應該是不太可能查到的。機會很渺茫。即使如此,我個人還是希望高安全性。絕對匿名!

先在公開的WiFi網路下(記得修改MAC地址,不可以被周圍攝影機拍到自己),註冊安全一點的VPN服務,再開Tor瀏覽器,如果可以的話,再掛一層Web Proxy,這樣基本上就很難追查了。

以上。


This entry was posted in Experience, Mood, The Internet, Privacy By Weil Jimmer.

最前頁 上一頁  1 2 3 4 5 /5 頁)下一頁

Visitor Count

pop
nonenonenone

Note

支持網路中立性.
Support Net Neutrality.

飽暖思淫欲,饑寒起盜心。

支持臺灣實施無條件基本收入

歡迎前來本站。

Words Quiz


Search

Music

Blogging Journey

4348days

since our first blog post.

The strong do what they can and the weak suffer what they must.

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.

Justice,Freedom,Knowledge.

Without music life would be a mistake.

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
bitcoin1gtuwCjjVVrNUHPGvW6nsuWGxSwygUv4x
buymeacoffee
Register in linode via invitation link and stay active for three months.Linode

Support The Zeitgeist Movement

The Zeitgeist Movement

The Lie We Live

The Lie We Live

The Questions We Never Ask

The Questions We Never Ask

Man

Man

THE EMPLOYMENT

Man

In The Fall

In The Fall

Facebook is EATING the Internet

Facebook

Categories

Android (7)

Announcement (4)

Arduino (2)

Bash (2)

C (3)

C# (5)

C++ (1)

Experience (52)

Flash (2)

Free (13)

Functions (36)

Games (13)

General (60)

Git (2)

HTML (7)

Java (13)

JS (7)

Mood (24)

NAS (2)

Note (32)

Office (1)

OpenWrt (6)

PHP (9)

Privacy (4)

Product (12)

Python (4)

Software (11)

The Internet (25)

Tools (16)

VB.NET (8)

WebHosting (7)

Wi-Fi (5)

XML (4)