Linux开源沙箱Lisa简单介绍
Lisa简单介绍
Lisa是一款开源的Linux沙箱,她使用Docker进行部署,通过qemu提供虚拟化能力,目前暂支持arm32/64、x86/x64、mips平台架构。
跳转链接:https://github.com/danieluhricek/LiSa.git
Lisa整体的架构不算复杂,一些核心的功能点:
- 静态分析主要由radare2提供;
- 流量分析主要由tcpdump提供,并使用disspcap来分析抓取的pcap包;
- 动态行为主要由SystemTap提供;
其中,有两个地方比较有意思,第一是:docker;第二是:buildroot
Docker
使用Docker部署
整个项目都是通过Docker进行部署,非常方便。
这里建议修改worker\Dockerfile的配置。提前下载images、radare2
FROM python:3.6-slimARG maxmind_key=YOUR—KEYRUN sed -i s@/security.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \&& sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \&& apt-get cleanRUN apt-get update && apt-get install -y --no-install-recommends \gcc \g++ \libpcap-dev \make \unzip \curl \patch \git \qemu \qemu-system \openvpn \binutils \iprange \wget \tar \e2tools \&& useradd -m lisaCOPY --chown=lisa:lisa ./res/lisa-linux-images-v1.0.1.tar.gz /home/lisa/lisa-linux-images-v1.0.1.tar.gz COPY --chown=lisa:lisa ./res/radare2-master.zip /home/lisa/radare2-master.zipRUN echo "Setup Radare2 ..." \&& unzip /home/lisa/radare2-master.zip -d /home/lisa/xx \&& mv /home/lisa/xx/radare2-master /home/lisa/radare2 \&& /home/lisa/radare2/sys/install.sh \&& echo "Setup LiSa Linux images ..." \&& tar -xzvf /home/lisa/lisa-linux-images-v1.0.1.tar.gz -C /home/lisa \&& mv /home/lisa/linux-images-1.0.1 /home/lisa/imagesCOPY --chown=lisa:lisa ./data /home/lisa/data COPY --chown=lisa:lisa ./docker /home/lisa/docker COPY --chown=lisa:lisa ./lisa /home/lisa/lisa COPY --chown=lisa:lisa ./requirements.txt /home/lisa/requirements.txtENV PYTHONPATH /home/lisaWORKDIR /home/lisaRUN pip install -r requirements.txt -i https://pypi.douban.com/simple \&& iprange -j data/blacklists/* > data/ipblacklist \&& ./docker/worker/maxmind.sh $maxmind_key \&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \git \gcc \g++ \make \patch \&& rm -rf /var/lib/apt/lists/* \&& rm -rf /radare2/.gitCMD ["./docker/worker/init.sh"]
使用Docker来编译lisa.ko
Lisa的动态行为是通过systemstap 4.1来实现,具体请参考lisa.stp。后续考虑来详细分析SystemTap。
这里也建议先下载好交叉编译工具。
在编译ko的时候,需要提供linux-header,这里的源码需要与buildroot一致,提供一个参考路径:
..../buildroot-2018.11.1/output/build/linux-4.16.7
编译ko文件如下:
docker run --rm -v ..../shared:/shared:rw csb -a arm -k /shared/linux-4.16.7 /shared/lisa.stp
Docker配置文件如下:
FROM fedora:29RUN dnf install -y @development-tools \gcc-c++ \python2 \zlib-devel \flex \unzip \bison \bzip2 \wget \findutilsRUN rpm -e --nodeps systemtap \&& rpm -e --nodeps systemtap-client \&& rpm -e --nodeps systemtap-devel \&& rpm -e --nodeps systemtap-runtime COPY . /csb/RUN unzip /csb/systemtap-master.zip -d /csb/xx && mv /csb/xx/systemtap-master /csb/systemtapWORKDIR /csb/systemtapRUN ./configure --with-elfutils=/csb/elfutils/elfutils-0.176/ \&& make all \&& make install \&& rm -rf /usr/share/systemtap/tapset \&& mv /csb/tapset /usr/local/share/systemtap/tapsetWORKDIR /ENTRYPOINT ["/csb/entrypoint.sh"]
BuildRoot
buildroot版本:buildroot-2018.11.1
内核版本:linux-4.16.7
以aarch64为例:
修改configs/qemu_aarch64_virt_defconfig
BR2_CCACHE=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TARGET_GENERIC_ROOT_PASSWD=“root”
BR2_PACKAGE_STRACE=y
BR2_PACKAGE_STRESS=y
BR2_PACKAGE_OPENSSL=y
BR2_PACKAGE_ELFUTILS=y
BR2_PACKAGE_DROPBEAR=y
修改board/qemu/aarch64-virt/linux.config
CONFIG_RELAY=y
CONFIG_KPROBES=y
CONFIG_DEBUG_INFO=y
CONFIG_GDB_SCRIPTS=y
CONFIG_DEBUG_KERNEL=y
CONFIG_FUNCTION_TRACER=y
最后编译
make qemu_aarch64_virt_defconfig
make BR2_JLEVEL=$(getconf _NPROCESSORS_ONLN)
这里同时需要把systemtap一并编译进去。
其它
安装systemtap时,使用:
make install prefix=......./buildroot-2018.11.1/output/target
,会把systemtap相关工具安装到/target/bin目录下虚拟机$PATH=
/bin:/sbin:/usr/bin:/usr/sbin
默认是不包含/usr/local/bin的~
QEMU虚拟机退出方式:
Ctrl
+a
,然后按x
Linux开源沙箱Lisa简单介绍相关推荐
- 查看linux vnc用户名,Linux-VNC简单介绍
Linux-VNC 一.VNC简单介绍: VNC,全称为Virtual NetworkComputing,它是一个桌面共享系统.它的功能,类似于windows中 的远程桌面功能.VNC使用了 RFB( ...
- 简述linux系统引导流程,简单介绍如何用WinGrub 引导Linux系统简述
以下主要介绍我的第一次安装Linux系统遭遇,以及怎么度过这个遭遇的,希望对大家有所帮助.不喜欢的可以略过. 一.开篇叙述我第一次安装Linux系统和接下来的经历 开篇:按照北南兄弟的<FC4菜 ...
- linux ps le hrtime,Linux 高精度定时器hrtimers简单介绍和应用场景
hrtimer:high-resolution kernel timers: hrtimers的诞生是由于内核开发者在使用过程中发现,原始的定时器kernel/timers.c,已经可以满足所有场景的 ...
- Webrtc 开源代码的简单介绍
WebRTC提供了视频会议的核心技术,包括音视频的采集.编解码.网络传输.显示等功能,并且还支持跨平台:windows,linux,mac,android, iOS等.Webrtc 是多媒体通信技术 ...
- Linux操作系统启动流程简单介绍
Linux 系统的启动,从计算机开机通电自检开始,一直到登陆系统,需要经历多个过程.了解 Linux操作系统的启动过程,对Linux操作系统更深入认识和日常的运维工作非常有帮助,感兴趣的朋友可以了解一 ...
- 开源项目cardslib简单介绍和导入eclipse并运行的方法
本文转自http://blog.csdn.net/a396901990/article/details/25158223,仅供学习使用,所有权力归原作者所有. 开源项目里有两个关于Crad类型的自定义 ...
- Linux主流桌面环境简单介绍
概述:本文收集了在Linux操作平台下的几大最常用的桌面环境,分析了它们的利弊,方便你作出正确的选择. Unity Unity是由Ubuntu系统的开发公司Canonical所开发的,用于它们的旗舰发 ...
- linux java jar war_简单介绍Java 的JAR包、EAR包、WAR包区别
WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.War专用于Web方面.大部分的JAVA WEB工程,都是打成WAR包 ...
- linux Packet socket (1)简单介绍
本文主要来自于linux自带的man packet手冊: http://man7.org/linux/man-pages/man7/packet.7.html 平时常常使用的INET套接字提供的是7层 ...
最新文章
- 好货不能错过!一款在GitHub上22k+star的人力资源管理系统
- mysql sql 检测磁盘_MySQL 找到临时表用到磁盘的SQL
- Tomcat源码分析 - 1
- 如何用Java创建不可变的Map
- mysql 函数怎样创建_mysql里怎样创建函数
- 04-Fibonacci
- CentOS6.5下的Nagios安装配置详解(图文)
- 向前、向后、横着走,双足机器人Cassie,靠深度强化学习学会了走路丨论文
- 4个Shell小技巧,帮你提高机器学习生产效率
- Linux ubuntu基本知识
- android源码上面开发App
- oppo9s刷机教程_OPPO R9s 目前最简单的刷Recovery ROOT 方法,强烈推荐
- 数学分析教程(科大)——1.12笔记+习题
- wps表格错开半行_WPS文字制作左右错行表格(运用插入分节符、分栏等功能)
- 助力网络安全发展,安全态势攻防赛事可视化
- 未找到任何音频输出设备的解决方法
- golang中的dns问题
- python 3.7.0 小甲鱼 有道词典翻译 (error:50)问题解决
- 【人生如逆旅,我亦是行人】-半年总结
- 小程序改变swiper样式(带缩略图)
热门文章
- L7 记忆概论 长期记忆和工作记忆
- nginx之rewrite用法
- 海思多媒体(MPP)开发(0)——序言与目录
- Win10系统开发者模式安装Ubuntu搭建跳板机查看日志
- 公共换乘Java语言怎么编写_公交换乘问题---java解决方案
- cin,cin.get(),cin.getline(),getline(),fget()
- ad936x接收功能验证的寄存器配置(3)
- Java 遍历 Set 集合的方法,以及如何遍历删除 Set 集合中的元素?
- 给刚毕业或培训机构出来人的建议
- [附源码]计算机毕业设计Python大学生心理测评系统(程序+源码+LW文档)