00:00
今天呢,我们来讲一下这个反弹沙啊,反弹沙这个东西呢,在这个咱们渗透的过程中呢,也经常用到,比如说我这儿有一个机器啊,我已经搞进去了,然后呢,比如说我要下一个东西啊,也不是说下一个东西啊,我就想要放一个码,然后呢,我想要他去执行一些这个系统指令啊,当然了,这个只是这个反弹本身的一个功能啊,如果你需要一些远程控制之类的东西呢,它可能你需要的功能会实现的更多,但是今天呢,我们只是实现远程的一个financial弹个功能么?这个时候如果他想要去执行的,比如Windows啊,你想执行这个C命,那么这个时应该去怎么做呢?啊,就是如果说啊,你是这个呃,用这个服务端去主动连客户端,这是不现实的,因为什么呢?因为你不知道你这些哪一个客户端上线了啊,你也不知道它具体IP,当然你点对点的话,那就另说了,那这个时候你更好的一个应用是什么呢?就是你去反反向连接是什么意思呢?就是你有你的服务端啊,去监听端口。
01:00
啊,开启指定的一个端口的一个监听,然后呢,由客户端啊,然后往上连,往服务端上连啊,然后呢,你就知道啊,有多少个这个客户端上线了啊,然后呢,有多少个这个客户端可以操控啊,他的IP是什么啊,因为他是主动连过来的嘛,所以说呢,你可以知道它的外网IP是什么,即使他之后啊,因为我们现在呢,国内的大部分情况下呢,是这个呃动态IP啊,很少有分配给你的一个这个固定IP的,所以说呢,即使他的这个IP有变动啊,客户端IP有变动啊,只要他在重新上线的时候,因为他如果说是这个再次这个盖希啊,比如说你把它加到启动项里之类的啊,那么它会重新上线嘛,那么这个时候啊,它就会重新会,你就会重新获取到它一个新的IP啊,所以说这是反的一个好处,那怎么去写呢?其实也非常简单,因为我们只是用YTH实践一个反的功能,没有太多的远程控制的一些其他东西,所以说呢,相对而言呢,会比较简单,呃,大概也就几十号代码就能实现出这么一个功能啊,然后我们首先呢,还是打开我们的一个PIPI。
02:00
Farm。我们新建一个项目啊,还是一个纯拍子的一个项目啊,名字随意啊,然后解析器我们还用这个就行了,嗯,创建。呃,你像是这种反弹呢,实际上而言呢,你是需要一个客户端一个服务端的嘛,客户端就是你下发到这个,呃,目标机里的,然后服务端呢,是在你自己这边的啊这么两个东西,那么我们这边呢,比如说我这个啊,我就把它一个什么呢,作为一个这个服务端,然后呢,我再给它新建一个客户端啊。
03:03
新建一个PI文件啊,一个客户端的一个PI文件。客户端啊好,现在呢,我们就开始先实现一个服务端啊,我们把这些多余的东西呢,都都去掉啊,没什么用啊。我们这个是一个网络程序嘛,所以说呢,你肯定要包含他的一个这个骚啊,一个套节字的一个库啊。好,有了这个套节字的库之后呢,这个代码因为比较简单,我们就不写函数了啊,我们直接在它的这个may底下一执行就行了,首先呢,你要去创建一个套接字,你首先要有什么呢?你要你要监听自己本地的哪,你这因为你作为服务端嘛,你要监听本地的一个端口啊,那你还要给他提供什么呢?提供IP,那么这个呢,你就给他这样写啊,就是比如说我这是一个server啊,我是一个服务端啊,然后呢,我用一个这个组啊,组里两个元素啊,一个是呢我的IP啊,那我如果是本地IP呢,我就给他一个127.0.0.1啊这个一个内网的一个回话IP,然后如果说是你是有这个公网IP的情况下,比如说你去买了一个VPS,或者买了一个服务器,那这时候你拥有了一个固定的公网IP,你也可以在这个位置上写上你的公网IP的一个地址,如果说你监听的是这个127.0.0.1这种这个回换IP,有时候你在这个出了局域网之后啊,它是接收不到的啊,所以说呢,尽量还是绑定那个公网IP,接着呢,我们是要选一个端口啊。
04:29
建议不要选择8000以下的端口啊,因为8000以下的端口呢,就是用的人比较多啊,你可以用大数字一点的,因为你可以用到用零至这个66535啊这么多的一个端口号,你也没有必必要去跟他这个抢那些低位的这个端口,因为呢,你如果冲突了啊就很尴尬,然后呢,所以说呢,我们可以这个起个万起的啊,你当然你四五万那也更好了啊,一般情况下也没人用那么大的啊,他们抢的一般都是8000以下的一些IP,然后接着呢,我们就要干什么呢,我们要给它创建一个sock啊,然后呢,返回一个什么一个类似于我们一个加加中so句柄的一个东西啊,就是我们这个sock库里边这个sock啊,直接返回,返回完事之后呢,我们现在呢,只是得到了一个它的一个类似句柄的东西,但是呢,我们还没有给它进行一个绑定啊,就是我们还没有对它的指定IP和指定端口啊行一个定,那么我们就开始进行个定的这么一个工啊,就用柄啊进行一个啊就定啊它。
05:29
我们刚才进行初始化了它的IP和端口的这个组,我们把这组去就可以了。哦,稍微有点卡稍等。好,然后诶,我还没拷进去好像啊拷进去了啊,现在我们就绑定了,绑定完事之后呢,我们现在呢,就要给他这个设置一下这个监听。然后呢,我们要等待这个我们的客户端连接过来啊,因为我们现在实际上是一个这个服务端啊,所以说我们要等待客户端啊过来接我们。
06:04
然后呢,它会在这个位置上阻塞主啊阻塞它就不会往下走了,等到你这个它不阻塞往下走的时候,就说明客户端已经连上来了啊。然后我们就把它这个地址啊打印出来,然后再显示一个,比如说这个链接成功啊,这样啊到这儿呢,我们这个客户端就链接过来了啊,但是我们还什么都没有做啊,只是说客户端连接过来了,连接过来后呢,我们可以来给他这个进行一个这个V循环啊,比如说我们一个V处啊,其实就是一个死循环,死循环之后呢,我们在里边干什么呢?我们去接收啊客户端发过来的东西啊,比如说我要获取一下客户端的目录,那它就是一个店。DR啊DR,我用这个我客户端啊,来给他进行一个接收啊RCV啊,这是接收他这个客户端来传播的数据,然后中间呢,它有一个buff数是比如你给置。
07:09
弄完之后呢,我们现在呢,就拿到了客户端的一个这个路径啊,然后呢,我们来进行一个接收啊,接收的时候呢,我们就可以用这个input啊来这个进行这个接收嘛,啊就是输入嘛,然后呢,我们打印一下提示啊,就把客户端传过来的这个啊路径啊打印出去,然后呢,再给它加一个冒号啊作为一个提示信息的存在,好然后呢,我们后边啊给它设置一下。呃,我想想啊,它呢,呃,它会返回啊,接收之后它会返回一个这个值啊,我们来给他接收一下啊,比如说我用一个CMD啊,来给他接收一下,这个就是指令,接着呢,我就把这个指令啊下发,下发到什么呢?下发这个是什么?这个是我们的客户端啊客户端啊,那我现在呢,就把它发送到我们客户端的这个IP上啊,然后呢,给它进行一个这个命令的下发,比如说我下发一下这个CMD啊,然后扣的好,那么下发之后呢,如果说啊if啊,我这做一个特殊判断就是什么呢?如果说不不特殊判断的情况下,我们就干嘛,我们继续等待这个客户端给我们的结果嘛,因为我们下发指令了,肯定是期待他返回一个结果的,对不对啊,那么所以说这个时候呢,我就干嘛呢,我就直接啊,在这个位置上等待他啊,等待它的一个结果,把它结果拿回来。
08:32
好,然后呢,拿回来结果之后呢,我把这个结果进行一个打印啊,就是其实就是什么这个CMD,就是我们这边服务端下发的指令啊,比如说一个什么什么什么什么CMD指令,然后下发客户端,客户端进行执行,执行完之后把它的回显拿回来啊,那个回显是一个什么样的概念呢?比如说我这输入一下这个CMD啊,我们用这个命令就是类似于什么呢?类似于我们服务端拿过来一个东西到这儿进行执行,比如一个D,诶你看这个就是显示出来了嘛,那么这个时候我要把这个东西重新给回到服务端里,让服务端进行一个显示啊,其实就是这么一个呃操作,然后呢,我们现在呢,就要干嘛呢,就要来啊给它打印出来啊,我们接收到的东西啊,直接啊给他进行一个抵扣啊,然后进行一个输出,输出之后呢,我们因为我们已经拿到了啊,如果说啊,我们还想继续下发指令,它因为这是一个循环啊,在循环里它会直接再跳上去,然后继续进行循环啊,进行下一次的这个,呃,这个接这个命令的下发和接。
09:33
啊,那如果说啊,你想跳出了,或者说在这个位置上啊,出现其他问题了啊,跳出了,那你就可以直接干嘛呢,直接啊给他进行一个把网络关掉啊。Clothes。啊。我这个不对吗?我我为啥没有提醒呢。啊是有的啊,刚才不知道为什为什么没有提醒啊,那这个是常规状况啊,那我们要设置一种特殊状况,什么叫特殊状况呢?就是如果说我们下发的指令啊,是我们预设的一些特殊指令,比如说我的CD是什么呢?我们判断一下啊,如果说我们的C是E什么就是退出对不对啊,那如果退出呢,我就直接用一个break啊,就跳出了啊在这个位置上啊,我就把它close掉了就行了,然后呢,我现在呢啊,就来这个直接啊对它进行一个这个打印,打印就是什么打印,我这东西实际上已经退出了就完事了,那这个呢,就是我们的一个服务端的一个相关操作,那服务端写完之后呢,我们可以看一下啊,其实才19行对不对啊,那还算上了空格才19行啊,然后我们现在呢,就要来干嘛呢,就要来这个服这个客户端这边啊,来给他实现客户端的一个代码,首先呢,我们也是要这个包含一下他的这个so啊一个套字的,而且还有什么呢,因为我们在这个服务端那边,我想要能获取到什么呢。
11:00
获取到客户端的一个这个呃路径啊,看到没?我想要获取到一个目录信息啊,那这个时候所以说我要用一个OS库啊,OS库系统库啊,要把它获取出来,然后接下来呢,我们给大家写一个这个may啊,然后从may开始写也是啊,我首先呢,我这有一个这个server的一个IP server的一个IP,我等于什么呢?等于我的这个1127.0.0.1啊,这个还是个回联回放IP要跟服务端一致,如果是外外外网IP呢,你就跟那个也是设置成这个服务器的外网IP就可以了,接着呢,就是你的一个这个端口号。比如说我刚才设的是这个12138啊,那你这边呢,一定要一样啊,不然的话连上连不上去,那我现在呢,有了这两个东西之后呢,我还是要把它给搞成一个这个元组,当然了,你也可以干嘛呢,跟那边一样,你直接写成元组啊,不用这个定义上面两个变量,其实效果是一样的哦,这IP然后呢,是一个这个端口,好,那有了这个东西之后呢,接下来呢,我跟这个服务端一样啊,也是要干嘛呢,也是要进行一个的一个创建啊。
12:03
啊,等于啊,So点。但是区别在哪呢?区别在于服务端这边啊,他需要给绑定自身的一个IP和端口啊进行的,然后进行监听,但客户端很明显不用进行这套流程,他要干什么呢?他要直接啊这个连接上去啊,就然后干嘛呢,连接到我们的服务器上,然后他提供的信息呢,就是我们这个so的一个元组啊,拿拿到他的IP地址以及他的这个端口号啊,直接连上去啊,然后呢,我们连上去之后呢,我们要干嘛呢?就是要接收一下我们服务端发过来的这个信息了,对不对啊呃,那我们在这个服务端啊,要获取的实际上是什么东西呢?我们也都知道啊,是一个目录信息啊,那所以说我们首先一个V处。我们先把这个我们启动的时候啊,我们就把什么呢,把我们的目录信息传过去啊,第二等于什么呢?os.get啊,Get啊,这个CWD啊,这就是获取本地目录,获取完目录之后,我们通过SER啊,然后呢,Send的方式啊,把我们的这个呃,目录信息啊给它发出去啊,咱注意你需要N扣的编码,然后呢,发出去之后呢,我们接下来呢,要接收服务器,服务器给我们的一个反馈啊,一个cmd SR reb啊,然后接收的是什么呢?接收的是你的这个命令啊,服务器下发的命令,好,接收完命令之后呢,我们首先要判断一下,判断一下我们CM是不是等于等于什么呢?等于等于e s sit,如果说等于e sit,说明在服务端下这个命令的时候,我们需要退出啊,那我们就直接break,如果没不是等于eit,那就说明我们需要处理,那么这个时候呢,我们要给他写一个这个else。
13:50
等一下啊,卡住了啊,然后呢,需要领取那个网际课程呢,可以联系咱们的这个老马,然后呢,进行一个领取啊,然后还有什么源码工具啊啊,然后也可以进入这个QQ群进行这个交流啊好,然后呢,接下来呢,我这是一个else啊else呢就是命令不是exit就不是对出的情况下,那我们呢,就要在这边呢进行这个另一种处理了,就是什么呢?就是首先我这儿有一个返回,等于什么呢?等于我用这个系统库里边的一个这个p open啊,它可以执行这个命令,然后呢,我就直接啊给它进行一个这个CMD,然后呢,还要干嘛呢,进行一个read啊,这个read的意思呢,就是把这个结果啊读到我们这里啊,读到我们这个变量里,读完变量里之后呢,我们现在呢,就是如果说啊,这个返回的结果不为这个空的情况下啊,就是if not,然后判断一下判断,如果是这个正常的情况下,不为空的情况下,我们就把它啊设置为这个,呃。
14:51
嗯,我想想啊。啊对,如果是失败的情况下啊,我们就给他这个。输出一下啊,我想想啊,不用输出,好像我们直接发送出去就行了。
15:07
De。点变码N扣啊N扣啊直接发出去啊,我们试一下,然后呢,我们如果走完这套流程了,我们就可以啊直接啊给它进行一个sock的一个关闭啊close啊close之后之后啊,我们打印一下退出。啊,这样呢,我们的客户端和服务端啊,就已经都写完了啊,加起来一共也就40多行代码啊现在呢,我们先运行一下我们的服务端。好,服务端呢,已经起来了啊,他现在在这个位置上啊,等待链接,接着呢,我们运行我们的这个客户端,我要把它改成当前文件,然后运行好,我客户端就也执行起来了啊,然后执行起来之后,你可以看到啊服务端啊,这边显示的是什么,我的IP,我的端口啊,已经连接成功了,连接成功之后呢,我现在呢,要干什么呢?我要这个,你看这个就是什么,这就是我客户端发过来的这个DR啊,看到没,这就DR,然后现在呢,我就可以写指令了啊,比如说我直接啊输入一个DR指令。
16:16
好看到没,这个返回的是什么?这个返回的就是在这个目录下啊,然后呢啊进行什么这个目录下啊,所所这个带的这这些目录里的这些信息啊都显示出来了,然后你可以继续输入命令,比如说我查看,我可以查看一下我这个客户端的网络信息,我输入一个IP conig,然后直接输入啊,你看它这个IP相关信息啊,就直接都返回来了啊然后客户端这边呢,是这个没有输出的啊,只是一边一直在这个死循环啊,啊这个就是什么?这个就是反弹shell的一个功能啊,由我们的这个服务端啊进行什么呢?进行一个监听,然后呢,由客户端连上来,然后呢,我们这边主动提供一些信息给,在这个登录的时候,主动提供一些这个信息给我们的服务端,然后由服务端啊进行命令下发,下发到客户端执行,执行之后把结果返回到我们的这个服务端上啊,就这么一个流程,好,那么这个技术部分呢,就讲完了啊,有什么问题没有,有问题现在问没问题的话呢,我们就进行下一盘。
17:28
谁看一眼我腾讯课堂是不是没了?我腾讯课堂好像崩溃了。开了开了开了,只是崩掉了,刚才还开着呢。
18:02
腾讯课堂不知道怎么莫名其妙崩掉了。
我来说两句