問,有沒有人在 maintain 一個 list 包含所有知名網域(TQDN only)中,哪些 domain 的 subdomain 是可以給大眾註冊的
例如 Amazon 的 cloudfront.net,Automattic 的
wordpress.com
例如我看到 blablabla . wordpress . com,這個 domain 的維護者可能跟 wordpress . com 是不一樣的
我也覺得 Top 30 most XXX XXX 這種文比較有機會
我要從一整個 domain pool 中找出哪些 domain 是可信任的
WHOIS 不能用,因為有 subdomain
certificate 可以用,但不是每個網站都有 HTTPS
ranking 可以用,但是要扣掉 cloudfront 這種可以讓註冊 subdomain 的 case
喔喔,這個我好像之前讀過,沒想過可以從這方面下手 OAO
從public suffix list找不是國家/頂級域的
太酷了,謝謝!!!!!!!!!!!!!!!!!!!!!
瀏覽器是按照這個列表決定什麼情況下你不能把 cookie 往父網域設的
好像還會因為subdomain的頁面有安全問題
直接把整串DN列為不安全
Firefox 網址列會標示 suffix 的部分 yay
但如果推拉式自強跟普,我還是秒選普啦,推拉式自強真的太破了
想請教個,現在我有一包有著「IP」與「數量」的 dataset,每個 data point 看起來會是:「1.1.1.1 有 3 個,8.8.8.8 有 2 個」
現在我想要算每個資料點散佈的程度(例如 entropy),其中我希望當下面兩種情況時算出來的數值要高一點
1. {
1.1.1.1: 10} (全部都對應到同個 IP)
2. {
1.1.1.1: 1,
1.1.1.2: 1,
1.1.1.3: 1,
1.1.1.4: 1,
1.1.1.5: 1,
1.1.1.6: 1} (分佈明顯有規律)
當很明顯就是一大堆不同網段的 IP 時,算出來的數值要小一點
有什麼好的方法可以達到這個要求
等等會有人出來說你問題沒有 well define,沒有意義,再說你不懂演算法他才懂ㄛ
{1.1.1.1:3}跟{1.1.1.1:2, 1.1.1.2:2}誰比較大
當數量偏向集中時,數量越集中分數越高,當全部都一樣時最高
當數量偏向分散時,IP 越接近分數越高
而且這其實有個問題是 1.1.255.255跟1.2.1.1 會太近
要避免的話 可以先把 IP 都先對應到
/24 下
例如
1.1.1.1: 2,
1.1.1.2: 3 換成
[16843009, 16843009, 16843010, 16843010, 16843010]
然後算 entropy,這樣可行嗎
就1.1.1.1到1.1.1.255都變成1.1.1.08
話說可以求 python script 嗎,我感覺我沒有到非常懂 QQ
entropy 可以用 scipy.stats.entropy 算
我覺得大概是
scores
(a)
range =
/32 (weight = 1)
把每個 IP 都 map 到 range 下
把每個 range 依照 weight 跟出現次數計算加權分數
把每個 range 得出的分數分別加回原本 IP 的得分
ya
那 weight 就用 1/($range_ip_count) ㄚ
例如
/24 的 weight 是 1/255 之類的
好,我的處境是,我透過了一個方法找到了一系列可能的 malicious domain(嚴格來說是好幾個不同的 malicious domain set),但我要去驗證說我找到的 malicious domain 是對的
因為我是從一個小 set 去推廣出大 set,所以如果能證明這一包潛在 malicious domain 跟原本已知為真的 malicious domain 在同個 IP 或是足夠接近,那就比較有信心可以說他也是 malicious domain
所以 whois record 不可信,我嘗試過了
你去算你假設的惡意IP跟現有已知惡意IP中每一筆的Distance
現在就是有找到這種現象惹,所以我才想追下去阿 QQ
怎麼定義 distance(例如像是剛剛 map 到數線上?)以及怎麼加權
我剛剛的笨演算法應該可以給尼歸納在某個網段的 IP 集中程度的
就單純突然腦袋炸出一個想法,想去驗證這想法對不對而已
求 pseudocode / python script,後者尤佳(?
不要問我 我不知道怎麼寫 我只能給你剛剛我提的算法的扣www
好沒 他只是 response time 30s 而已
import socket
mips = open('mips').read().strip().split('\n')
known = open('known').read().strip().split('\n')
def dist(a, b):
def to_num(addr):
quads = map(ord, socket.inet_aton(addr))
return reduce(lambda x,y: x * 0x10000 + y, quads)
return abs(to_num(a) - to_num(b))
def score_cal(oscore):
t = 0
for i in range(len(oscore)):
t += oscore[i] * 0.95**i
return t
print(mips, known)
m = dist('0.0.0.0', '255.255.255.255')
for i in mips:
score = []
print(i)
for j in known:
#print(i, j)
score.append((m - dist(i, j))//1e15)
#print(score)
score.sort()
score.reverse()
print(score_cal(score))
所以 known 是已經確認是 malicious,mips 是我推出來的?
>>> int(ipaddress.IPv6Address('::1'))
1
啥?
所以 known 是已知為 malicious ip
mips 是我想驗證的潛在 malicious ip
還是反之?
@seadog007 其實我沒有很懂你現在的邏輯
我要算分數的是一整個 set 裡面,距離已知 IP 的分散狀況,不是 set 裡面的每一個 IP 欸
取 mean 會爛掉嗎 OAO
另一問題是 1.1.1.1 1.1.2.1 與 1.1.1.1 1.1.255.1 的dispersion 應該是一樣的
取平均的話,這樣只要有一批靠北遠,平均就會起飛了耶?
我也覺得用 ASN + Whois + BGP 大概可以解決問題(
我覺得問 AdBlock 之類的東西也能解決問題(X
如果 ip pool 小到能連續拿到連續 ip 的,誤殺影響似乎也不大(喂