成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

滲透基礎-利用IMAP協(xié)議讀取郵件

開源
本文以Exchange為例,介紹通過IMAP協(xié)議下載郵件和附件的方法,開源代碼,分享腳本編寫細節(jié)。

[[384830]]

0x00 前言

在滲透測試中,當我們獲得了用戶的郵箱憑據(jù),需要對郵箱內(nèi)容進行分析時,可以選擇通過IMAP協(xié)議實現(xiàn)自動化來提高效率。

本文以Exchange為例,介紹通過IMAP協(xié)議下載郵件和附件的方法,開源代碼,分享腳本編寫細節(jié)。

0x01 簡介

本文將要介紹以下內(nèi)容:

  •  基礎知識
  • Exchange開啟IMAP功能和登錄日志
  •  Python3實現(xiàn)細節(jié)
  •  開源代碼

0x02 基礎知識

1.IMAP

  •  全稱是Internet Mail Access Protocol,即交互式郵件存取協(xié)議
  •  是一種郵件獲取協(xié)議,可以從郵件服務器上獲取郵件的信息
  •  使用端口143

2.IMAP4_SSL

  •  全稱是IMAP over SSL,是IMAP協(xié)議基于SSL安全協(xié)議之上的一種變種協(xié)議
  • 繼承了SSL安全協(xié)議的非對稱加密的高度安全可靠性,可防止郵件泄露,也是用來接收郵件的
  • 使用端口993

3.Python3 imaplib庫

官方文檔:

https://docs.python.org/3/library/imaplib.html

  •  該模塊定義了三個類,IMAP4,IMAP4_SSL和 IMAP4_stream
  •  為了提高安全性,我們通常使用用于安全連接的子類IMAP4_SSL

4.Python3 email庫

官方文檔:

https://docs.python.org/3/library/email.html

  • 當我們使用imaplib庫讀取郵件時,需要使用email庫將接收的消息轉(zhuǎn)換為EmailMessage對象,可以更加方便的對郵件內(nèi)容進行處理

0x03 Exchange開啟IMAP功能和登錄日志

默認情況下,Exchange中未啟用IMAP4客戶端連接

參考資料:

https://docs.microsoft.com/en-us/exchange/clients/pop3-and-imap4/configure-imap4?view=exchserver-2019

開啟方法如下:

1.啟動IMAP4服務,并將服務配置為自動啟動

Powershell命令如下:

  1. Start-Service MSExchangeIMAP4; Start-Service MSExchangeIMAP4BESet-Service MSExchangeIMAP4 -StartupType Automatic; Set-Service MSExchangeIMAP4BE -StartupType Automatic 

2.配置IMAP4設置

格式如下:

  1. Set-ImapSettings -ExternalConnectionSettings "::""::"...  -X509CertificateName  [-SSLBindings ":",":"...] [-UnencryptedOrTLSBindings ":",":"...] 

Powershell命令實例:

  1. Set-ImapSettings -ExternalConnectionSettings "mail.test.com:993:SSL","mail.test.com:143:TLS" -X509CertificateName mail.test.com 

3.重新啟動IMAP4服務

Powershell命令如下:

  1. Restart-Service MSExchangeIMAP4; Restart-Service MSExchangeIMAP4BE 

4.查看配置:

Powershell命令如下:

  1. Get-Service MSExchangeIMAP4; Get-Service MSExchangeIMAP4BEGet-ImapSettings | Format-List *ConnectionSettings,*Bindings,X509CertificateName 

使用郵箱用戶登錄OWA,選擇Settings->Options,能夠看到IMAP配置,如下圖:


默認情況下,Exchange中未啟用日志功能

參考資料:

https://docs.microsoft.com/en-us/exchange/configure-protocol-logging-for-pop3-and-imap4-exchange-2013-help

開啟方法如下:

1.開啟日志功能

Powershell命令如下:

  1. Set-ImapSettings -Server "CAS01" -ProtocolLogEnabled $true 

2.重啟服務

重新啟動IMAP4服務,Powershell命令如下:

  1. Restart-Service MSExchangeIMAP4; Restart-Service MSExchangeIMAP4BE 

3.查看配置信息:

Powershell命令如下:

  1. Get-ImapSettings | Format-List ProtocolLogEnabled,LogFileLocation,LogPerFileSizeQuota,LogFileRollOverSettings 

默認的日志保存路徑為:C:\Program Files\Microsoft\Exchange Server\V15\Logging\Imap4

0x04 Python3實現(xiàn)細節(jié)

測試代碼1

  1. import imaplibM = imaplib.IMAP4_SSL('192.168.1.1','993')M.login('User1''Password')data = M.list()print(data)M.logout() 

以上代碼用來獲得所有郵箱文件夾對應的名稱

(1)M.list()用來列出郵箱文件夾的名稱

注:

不同的郵件系統(tǒng)只有收件箱名稱統(tǒng)一默認為INBOX,發(fā)件箱的名稱一般不同,例如Exchange的發(fā)件箱名稱為"Sent Items"。

測試代碼2

  1. import imaplibM = imaplib.IMAP4_SSL('192.168.1.1','993')M.login('User1''Password')M.select('INBOX')typ, data = M.search(None, 'ALL')for num in data[0].split():typ, data = M.fetch(num, '(RFC822)')print('Message %s\n%s\n' % (num, data[0][1]))M.close()M.logout() 

以上代碼用來讀取收件箱所有郵件的內(nèi)容。

(1)M.select('INBOX')表示選擇收件箱

  •  如果換成讀取Exchange的發(fā)件箱,對應的代碼為M.select('"Sent Items"')
  •  如果添加參數(shù)2為False,表示設置了只讀標志,不允許修改郵箱,示例:M.select('"Sent Items"',False)

(2)typ, data = M.search(None, 'ALL')中,None表示使用默認的ASCII編碼,ALL表示搜索條件為所有郵件

  •  如果想要篩選出發(fā)件人為user2的郵件,對應語句為typ, msgnums = M.search(None, '(FROM "user2")')

M.search()返回的結(jié)果為郵件的序列號,例如我的測試環(huán)境下,收件箱有9個郵件,此時返回的結(jié)果為:

  1. [b'1 2 3 4 5 6 7 8 9'

注:

  •  這里需要區(qū)分郵件序列號和UID
  •  郵件序列號為從1開始累加的數(shù)列,UID是區(qū)分郵件的唯一標識

獲得郵件序列號同UID對應關系可使用以下代碼:

  1. import imaplibM = imaplib.IMAP4_SSL('192.168.1.1','993')M.login('User1''Password')M.select('INBOX')typ, data = M.search(None, 'ALL')for num in data[0].split():typ, data = M.fetch(num, 'UID')print(data)M.close()M.logout() 

(3)M.fetch(num, '(RFC822)')用來提取郵件消息

  •  參數(shù)1num表示提取的郵件序列號
  •  參數(shù)1支持同時提取多個連續(xù)郵件消息,例如同時提取郵件序列號為2-5的郵件命令為M.fetch('2:5', '(RFC822)')
  •  參數(shù)2'(RFC822)'表示數(shù)據(jù)項名稱,這里’(RFC822)’等同于BODY[],只返回郵件體文本格式和大小的摘要信息

如果只想獲得郵件頭部的內(nèi)容,可以使用以下代碼:

  1. M.fetch(num, 'BODY[HEADER]'

如果只想獲得郵件體的內(nèi)容,可以使用以下代碼:

  1. M.fetch(num, 'BODY[TEXT]'

(4)M.close()用來關閉當前選擇的郵箱

在執(zhí)行完M.select()后使用

測試代碼3

  1. import imaplibimport emailM = imaplib.IMAP4_SSL('192.168.1.1','993')M.login('User1''Password')M.select('INBOX')typ, data = M.search(None, 'ALL')for num in data[0].split():typ, data = M.fetch(num, '(RFC822)')msg = email.message_from_bytes(data[0][1])for part in msg.walk():if part.get('Content-Disposition'):fileName = part.get_filename()if bool(fileName):with open(fileName,'wb'as f:f.write(part.get_payload(decode=True))M.close()M.logout() 

以上代碼用來保存收件箱所有郵件的附件

(1)msg = email.message_from_bytes(data[0][1])用來將數(shù)據(jù)轉(zhuǎn)換為email對象

(2)msg.walk()用來遍歷郵件對象的所有部分

(3)part.get('Content-Disposition')用來獲得對應字段名Content-Disposition的字段值

如果郵件包含附件,將會帶有字段Content-Disposition,通過這個判斷郵件是否包含附件

(4)part.get_filename()用來獲得信息頭當中Content-Disposition字段當中名為filename的參數(shù)值,對應附件的名稱

(5)part.get_payload(decode=True)用來獲得附件內(nèi)容

由于附件內(nèi)容是以Base64編碼的形式存儲,所以在讀取時需要加入?yún)?shù)decode=True作Base64解碼。

測試代碼4

  1. import imaplibimport emailM = imaplib.IMAP4_SSL('192.168.1.1','993')M.login('User1''Password')M.select('INBOX')typ, data = M.search(None, 'ALL')for num in data[0].split():typ, data = M.fetch(num, '(RFC822)')msg = email.message_from_bytes(data[0][1])with open(num.decode('utf8') + '.eml','wb'as f:f.write(bytes(msg))M.close()M.logout() 

以上代碼用來逐個保存收件箱的所有郵件,以郵件序列號為名稱,后綴名為eml,可以使用Outlook打開。

0x05 開源代碼

我已經(jīng)將完整的代碼上傳至github,地址如下:

https://github.com/3gstudent/Homework-of-Python/blob/master/imapManage.py

代碼支持以下功能:

  • 查看文件夾配置
  •  從收件箱下載所有附件
  • 從發(fā)件箱下載所有附件
  •  從收件箱下載所有郵件
  •  從發(fā)件箱下載所有郵件

在下載文件時,首先以郵箱用戶名創(chuàng)建文件夾,保存對應用戶下載的文件。

默認支持通過IMAP4_SSL訪問Exchange郵件,對于不同的郵件系統(tǒng),收件箱沒有區(qū)別,發(fā)件箱的名稱有所不同。發(fā)件箱的名稱可以通過。CheckConfig命令查詢文件夾對應的名稱進行修改。

代碼修復了附件名稱因為編碼問題無法識別的bug。

為了便于記錄郵件訪問過程,加入了日志記錄功能。

0x06 小結(jié)

本文以Exchange為例,介紹通過IMAP協(xié)議下載郵件和附件的方法,開源代碼imapManage.py,分享腳本編寫細節(jié)。對于其他郵件系統(tǒng),可以參照此代碼只需要修改發(fā)件箱的名稱即可。

本文為 3gstudent 原創(chuàng)稿件,授權(quán)嘶吼獨家發(fā)布,如若轉(zhuǎn)載,請注明原文地址。

 

責任編輯:姜華 來源: 嘶吼網(wǎng)
相關推薦

2022-10-24 10:05:41

電子郵件協(xié)議SMTPIMAP

2010-07-14 10:26:58

IMAP協(xié)議

2010-07-14 09:40:30

IMAP4協(xié)議

2021-03-05 11:20:24

HTTPWebshellWeb服務器

2009-09-02 14:43:26

郵件服務器

2009-09-02 14:01:50

郵件服務器

2010-07-14 10:15:31

2009-09-02 14:34:42

郵件服務器

2009-09-02 14:27:29

郵件服務器

2021-02-01 11:03:36

Python開發(fā)郵件

2010-08-03 22:09:16

2010-07-14 10:07:06

IMAP4協(xié)議標準

2012-10-19 09:31:06

OutlookIMAP協(xié)議

2011-01-19 16:26:53

Evolution

2010-07-14 14:20:47

IMAP協(xié)議服務

2022-09-02 15:08:02

Python郵件發(fā)送

2013-11-26 09:38:24

惡意軟件滲透NSA

2013-04-23 09:38:39

2011-01-19 13:54:13

Thunderbird模板

2010-09-28 09:34:28

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费午夜视频在线观看 | 久久综合一区 | caoporn视频| 久久精品久久久 | 免费av播放 | 亚洲精品68久久久一区 | 女朋友的闺蜜3韩国三级 | 丝袜毛片 | 亚洲一二三区在线观看 | 亚洲精品久久久9婷婷中文字幕 | 精品综合久久 | 蜜臀av日日欢夜夜爽一区 | 欧美成人自拍 | 99精品国产一区二区三区 | 成人性视频在线播放 | 久久爱综合 | 97在线播放| 九九热精品视频 | 成人福利电影 | 一级在线免费观看 | 五月香婷婷| 亚洲一区二区三区在线播放 | 欧美久操网 | 91啪亚洲精品| 中文字幕乱码亚洲精品一区 | 日本免费视频 | 久久tv在线观看 | 国产精品日产欧美久久久久 | 性视频网| 国产在线视频一区二区董小宛性色 | 久久精品91久久久久久再现 | 中文字幕亚洲一区 | 九九九久久国产免费 | 91精品国产91久久久久久三级 | 国产一级在线观看 | 久久亚洲国产 | 成人免费av | 久久久久久美女 | 中文字幕亚洲一区 | 亚洲图片视频一区 | 国户精品久久久久久久久久久不卡 |